2016-01-18 34 views
5

Próbuję dodać wyszukiwanie haystack do mojego base.html, aby włączyć go globalnie do mojej witryny. Błędy to chociaż kiedy złożyć poszukiwanieDjango-Haystack: Obiekt "NoneType" nie ma atrybutu "_default_manager"

Dostaję:

Django Stóg: obiekt 'NoneType' nie ma atrybutu '_default_manager'

Dodałem go do INSTALLED_APPS i My urls.py. ./manage.py rebuild_index działa poprawnie.

models.py:

class Site(models.Model): 
    site_name = models.CharField(max_length=100, blank=False, null=False) 
    site_manager = models.CharField(max_length=100, blank=False, null=False) 
    address_1 = models.CharField(max_length=100, blank=False, null=False) 
    address_2 = models.CharField(max_length=100, blank=True, null=True) 
    address_3 = models.CharField(max_length=100, blank=True, null=True) 
    town_city = models.CharField(max_length=100, verbose_name='Town/City') 
    county = models.CharField(max_length=100, blank=False, null=False) 
    postcode = models.CharField(max_length=100, blank=False, null=False) 
    region = models.CharField(max_length=100, blank=True, null=True) 
    tel = models.CharField(max_length=100, blank=False, null=False) 
    email = models.EmailField(max_length=100, blank=False, null=False) 

    creation = models.DateField(auto_now_add=True) 
    last_modified = models.DateField(auto_now=True) 

    def __unicode__(self): 
     return self.site_name 

SiteIndex.py:

class SiteIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 
    site_name = indexes.CharField(model_attr='site_name') 
    site_manager = indexes.CharField(model_attr='site_manager') 
    address_1 = indexes.CharField(model_attr='address_1') 
    address_2 = indexes.CharField(model_attr='address_2') 
    address_3 = indexes.CharField(model_attr='address_3') 
    town_city = indexes.CharField(model_attr='town_city') 
    county = indexes.CharField(model_attr='county') 
    postcode = indexes.CharField(model_attr='postcode') 
    region = indexes.CharField(model_attr='region') 
    tel = indexes.CharField(model_attr='tel') 
    email = indexes.CharField(model_attr='email') 
    creation = indexes.DateField(model_attr='creation') 
    last_modified = indexes.DateField(model_attr='last_modified') 

    def get_model(self): 
     return Site 

    def index_queryset(self, using=None): 
     return self.get_model().objects.all() 

site_text.txt:

{{ object.site_name }} 
{{ object.site_manager }} 
# ect 

base.html

<form action="/search/" method="get"> 
    <input type="text" name="q"> 
    <input type="submit" value="Search"> 
</form> 

AKTUALIZACJA:

Zauważyłem, że jeśli przejdę na wersję DJango 1.8. To działa. Czy jest problem z większą liczbą upnodate wersji django?

Odpowiedz

8

Błąd jest taki, ponieważ twoja wersja aplikacji Haystack nie obsługuje Twojej wersji Django. Musisz zaktualizować wersję django-haystack, jeśli chcesz użyć Django 1.9+

Obsługa Django 1.9 została dodana w Haystack 2.5, a obsługa Django 1.10 została dodana w Haystack 2.5.1.

2

Pracowałem obejść instalując najnowszą wersję z github (obecnie 2.5.dev0):

pip uninstall django-haystack 
git clone https://github.com/django-haystack/django-haystack 
cd django-haystack 
python setup.py install 
4

może zainstalować najnowszą wersję z github (jak w odpowiedzi sygnał), ale przy użyciu pip:

pip uninstall django-haystack 
pip install -e git+https://github.com/django-haystack/django-haystack.git#egg=django-haystack 
+1

działa również (najnowszy pip): 'pip install git + https: // github.com/django-haystack/django-haystack.git' – Risadinha

+0

@Risadinha Thanks. To działało dla mnie. – Amyth

Powiązane problemy