gpt4 book ai didi

python - Haystack SearchQuerySet 不会过滤具有一个字符的 CharField (Whoosh/django-haystack)

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:59 28 4
gpt4 key购买 nike

我将 Django 1.5.1 与 django-haystack 2.1.0 和 whoosh 2.5.2 后端一起使用:

模型.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 一起尝试过,完全没有问题,干草堆过滤器应该如此。

我错过了什么?

最佳答案

这是我的解决方案:

class ApplicantIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
gender = indexes.CharField()

def prepare_gender(self, obj):
return obj.gender*3

现在您可以像这样过滤:

sqs.filter(gender='MMM')

关于python - Haystack SearchQuerySet 不会过滤具有一个字符的 CharField (Whoosh/django-haystack),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718061/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com