Reputation: 7056
Iam new to django-haystack, and I am trying to follow the getting started guide. However, I encounter an AttributeError: object has no attribute 'Indexable'.
In my settins.py, I have:
HAYSTACK_SITECONF = 'mysite.search_sites'
HAYSTACK_SEARCH_ENGINE = 'solr'
HAYSTACK_SOLR_URL = 'http://127.0.0.1:8983/solr'
In my models.py (which resides in my app called "searchapp"), I have:
from django.db import models
from django.contrib.auth.models import User
class baymodel(models.Model):
id = models.IntegerField(primary_key=True)
domain = models.CharField(max_length=765, db_column='Domain', blank=True)
category = models.CharField(max_length=765, db_column='Category', blank=True)
link = models.CharField(max_length=765, db_column='Link')
name = models.CharField(max_length=765, db_column='Name', blank=True)
cur_timestamp = models.DateTimeField()
def __unicode__(self):
return self.name
def index_queryset(self):
"""Used when the entire index for model is updated."""
return self.objects.all()
In my search_indexes.py (residing in my searchapp directory), I then have:
import datetime
from haystack import indexes
from searchapp.models import baymodel
class baymodelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='user')
link = indexes.CharField(model_attr='link')
domain = indexes.CharField(model_attr='domain')
pub_date = indexes.DateTimeField(model_attr='cur_timestamp')
def get_model(self):
return baymodel
site.register(baymodel, baymodelIndex)
In search_sites.py, I have:
import haystack
haystack.autodiscover()
I have installed solr according to their instructions, and I can see the pretty solr admin page.
Now, when I do:
sudo python manage.py build_solr_schema
I get thrown an AttributeError:
AttributeError: 'module' object has no attribute 'Indexable'
I have tried to do:
python ./manage.py shell
and I again get:
AttributeError: 'module' object has no attribute 'Indexable'
If I simply go into python and try and import haystack, I get:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import haystack
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/haystack/__init__.py", line 26, in <module>
raise ImproperlyConfigured("You must define the HAYSTACK_SITECONF setting before using the search framework.")
django.core.exceptions.ImproperlyConfigured: You must define the HAYSTACK_SITECONF setting before using the search framework.
which is strange because my settings.py does specify HAYSTACK_CONF and python ./manage.py shell throws an AttributeError.
Has anyone encountered a similar error? Thanks.
Upvotes: 3
Views: 2782
Reputation: 25946
Code is based on haystack 2 which is in development, v2 changes the way indexes are defined. Installed version is 1.2 so the correct documents are available here, e.g.
class BayModelIndex(indexes.SearchIndex, indexes.Indexable):
should be (with correct import of SearchIndex):
class BayModelIndex(SearchIndex):
also instead of get_model
, the index class needs index_queryset
defined, which should return a QuerySet.
Upvotes: 4