2012-07-05 55 views
0

我按照入门指南,但是当我运行manage.py rebuild_index时,似乎没有我的模型被编入索引。运行rebuild_index时没有创建索引

当我尝试在/搜索来搜索,我没有得到任何结果,这在日志中:

Problem accessing /solr/select/. Reason: no field name specified in query and no defaultSearchField defined in schema.xml 

这里是我的应用程序的search_indexes.py。它比指南的模型稍微复杂一点,所以也许这就是它不起作用的原因。

import datetime 

from myproject.apps.lead import Lead, Opportunity 

from haystack import site 
from haystack.indexes import * 

class LeadIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 

    company = CharField(model_attr='company__name') 

    contact_name = MultiValueField() 
    contact_city = MultiValueField() 
    contact_state = MultiValueField() 
    contact_postcode = MultiValueField() 
    contact_email = MultiValueField() 
    contact_phone = MultiValueField() 

    product = CharField(model_attr='product__name') 
    campaign = CharField(model_attr='campaign__name') 

    def index_queryset(self): 
     """Used when the entire index for model is updated.""" 
     return Lead.objects.filter(pub_date__lte=datetime.datetime.now()) 

    def prepare_contact_name(self, obj): 
     return [contact.name for contact in obj.contact_set.order_by('name')] 

    def prepare_contact_city(self, obj): 
     return [contact.city for contact in obj.contact_set.order_by('city')] 

    def prepare_contact_state(self, obj): 
     return [contact.state for contact in obj.contact_set.order_by('state')] 

    def prepare_contact_postcode(self, obj): 
     return [contact.postcode for contact in obj.contact_set.order_by('postcode')] 

    def prepare_contact_email(self, obj): 
     return [contact.email for contact in obj.contact_set.order_by('email')] 

    def prepare_contact_phone(self, obj): 
     return [contact.phone for contact in obj.contact_set.order_by('phone')] 

site.register(Lead, LeadIndex) 

而且我/templates/search/indexes/lead/lead_text.txt只是

{{ object.company__name }} 

我缺少什么?

在此先感谢。

回答

0

您的索引类需要从继承indexes.SearchIndexindexes.Indexable

class LeadIndex(indexes.SearchIndex, indexes.Indexable): 
    ... 

请不要使用通配符进口(*)。这是非常糟糕的形式,并导致命名空间污染。

相关问题