【发布时间】:2013-12-24 20:09:05
【问题描述】:
我将 Django 1.5.1 与 django-haystack 2.1.0 和 whoosh 2.5.2 后端一起使用:
models.py:
GENDER_CHOICES = (
(u'M', u'Male'),
(u'F', u'Female'),
)
class Applicant(models.Model):
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
search_indexes.py:
class ApplicantIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True,use_template=True)
gender = indexes.CharField(model_attr="gender")
搜索模板
{{ object.first_name }}
{{ object.last_name }}
在 django shell 中我正在尝试以下操作:
>>> from haystack.query import SearchQuerySet
>>> sqs=SearchQuerySet()
>>> sqs
[<SearchResult: tooldb.applicant (pk=u'1')>, <SearchResult: tooldb.applicant (pk=u'2')>]
>>> sqs[0].gender
u'M' #<-- So this seems to be indexed
#but when i try:
>>> sqs.filter(gender='M')
[] #<-- I get nothing ... ?
我在没有选择和 max_lenght > 1 的其他 CharFields 上尝试过,完全没有问题,干草堆过滤器应该是这样的。
我错过了什么?
【问题讨论】:
-
QuerySet 的过滤方法适用于一个字符作为查询,SearchQuerySet 什么也不返回。
标签: python django filter django-haystack whoosh