2013-01-08 66 views
1

views.py(相關部分)草垛的SearchQuerySet(),過濾沒有做任何事情(嗖2.4.1,Django的草垛1.2.7)

srch = request.GET.get('search', "") 
sqs = SearchQuerySet().filter(has_title=True) 
clean_query = sqs.query.clean(srch) 
results = sqs.raw_search(clean_query) 

search_indexes.py

from haystack.indexes import * 
from haystack import site 
from myproject.myapp.models import Person 

class PersonIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    name = CharField(model_attr='name')  
    has_title = BooleanField(model_attr='has_title') 

site.register(Person, PersonIndex) 

models.py

class Person(models.Model): 
    name = models.CharField(max_length=50) 
    has_title = models.BooleanField() 

    def __unicode__(self): 
     return u'%s' % self.name 

當搜索時,我從完整模型中獲得結果,而不是隻有has_titleTrue。應用過濾器後,我也跑了python manage.py rebuild_index。爲什麼過濾器不起作用?我使用Whoosh 2.4.1,Django-haystack 1.2.7Django 1.4

如果有人可以只確認他們可以成功地使用SearchQuerySet().filterWhoosh 2.4Django-haystack 1.2.7這會已經是很大的幫助。

回答

2

看來raw_search(clean_query)只是返回sqs中的每個項目(不知道爲什麼),用filter(content=clean_query)代替得到預期的結果。

srch = request.GET.get('search', "") 
sqs = SearchQuerySet().filter(has_title=True) 
clean_query = sqs.query.clean(srch) 
result = sqs.filter(content=clean_query)