2016-01-18 15 views
5

Sto cercando di aggiungere una ricerca di pagliaio al mio file base.html per includerlo globalmente sul mio sito. errori, però quando mi presento una ricercaDjango-Haystack: L'oggetto 'NoneType' non ha attributo '_default_manager'

sto ottenendo:

Django-Haystack: oggetto 'NoneType' non ha alcun attributo '_default_manager'

ho aggiunto al INSTALLED_APPS e la mia urls.py. ./manage.py rebuild_index funziona bene.

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> 

UPDATE:

Ho notato che, se eseguo il downgrade a DJango 1.8. Funziona. C'è un problema con più versioni aggiornate di django?

risposta

8

L'errore è dovuto al fatto che la versione di Haystack non supporta la versione di Django. È necessario aggiornare la versione di django-haystack se si desidera utilizzare Django 1.9+

Il supporto per Django 1.9 è stato aggiunto in Haystack 2.5 e il supporto per Django 1.10 è stato aggiunto in Haystack 2.5.1.

2

ho lavorato intorno a questo installando l'ultima versione da github (attualmente 2.5.dev0):

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

È possibile installare la versione più recente da github (come nella risposta del segnale), ma utilizzando pip:

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

funziona anche (pip più recente): 'pip install git + https: // github.com/django-haystack/django-haystack.git' – Risadinha

+0

@Risadinha Grazie. Questo ha funzionato per me. – Amyth

Problemi correlati