gpt4 book ai didi

python - 如何通过相关模型过滤 Haystack SearchQuerySets

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:36 25 4
gpt4 key购买 nike

如何通过相关模型字段过滤/加入 Haystack SearchQuerySet?

我有这样的查询:

sqs = SearchQuerySet().models(models.Person)

这会返回与等效管理页面返回的相同结果。

但是,如果我尝试按由外键链接的模型记录进行过滤:

sqs = sqs.filter(workplace__role__name='teacher')

它什么都不返回,即使页面 /admin/myapp/person/?workplace__role__name=teacher 返回了多条记录。

我不想对这些相关模型进行任何全文搜索。我只想做一个简单的精确匹配过滤器。 Haystack 有可能吗?

最佳答案

您不能使用类似 haystack 支持的搜索引擎执行连接。要进行这样的查询,您需要在搜索索引中以“非规范化”方式添加要过滤的信息:

class ProfileIndex(indexes.SearchIndex, indexes.Indexable):
# your other fields, most likely model attributes
role_name = indexes.CharField()

def get_model(self):
return Person

def prepare_role_name(self, person):
return person.workplace.role_name

然后你可以过滤字段role_name。如果例如,请确保更新您的索引。名称更改,则必须更新搜索索引中的所有相应条目。

关于python - 如何通过相关模型过滤 Haystack SearchQuerySets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683180/

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