2011-02-03 6 views
0

2つの異なるフィールドからインデックスモデルを検索するオプションがあります。たとえば、名前で検索したり、職業別に検索したりする場合があります。誰かが取る正しいアプローチを知っていますか?これは私の現在のsearch_indexes.pyファイルされる:haystack非プライマリフィールドの検索

class JobIndex(indexes.SearchIndex): 
    text = indexes.CharField(document=True) 
    name = indexes.CharField(model_attr='name') 
    occupation = indexes.CharField(model_attr='occupation') 

    def prepare(self, obj): 
     self.prepared_data = super(JobIndex, self).prepare(obj) 
     self.prepared_data['text'] = obj.name 
     return self.prepared_data 
    def get_queryset(self): 
     return Job.objects.filter(status='open') 
site.register(Job, JobIndex) 

答えて

0

正しいアプローチは、フィルタをSearchQuerySetを使用することです:http://docs.haystacksearch.org/dev/searchqueryset_api.htmlあなたのケースでは

、それは次のようになりたい:

from haystack.query import SearchQuerySet 

sqs = SearchQuerySet() 

# Find people named Bob 
sqs.filter(name="Bob") 
# Find people who are developers 
sqs.filter(occupation="developer") 
# Or chain searches: Find developers named Bob 
sqs.filter(occupation="developer").filter(name="Bob") 
関連する問題