有没有办法只将模型的过滤部分作为 SeachQuerySet?
就像是:
查询 = SearchQuerySet().models(Entry.filter(categories__name='something'))
代替
查询 = SearchQuerySet().models(Entry)
我要过滤的字段是多对多字段且未编入索引。
有没有办法只将模型的过滤部分作为 SeachQuerySet?
就像是:
查询 = SearchQuerySet().models(Entry.filter(categories__name='something'))
代替
查询 = SearchQuerySet().models(Entry)
我要过滤的字段是多对多字段且未编入索引。
搜索索引不存储任何关系,因此它是“平面”的。您只能将类别的 ID 添加到索引中Entry
(请注意,您必须为此使用prepare_
- 方法):
class EntryIndex(indexes.SearchIndex, indexes.Indexable):
# your other fields
categories = MultiValueField()
def prepare_categories(self, obj):
return [category.pk for category in obj.categories.all()]
您可以执行以下操作:
category = Category.objects.get(name='something')
sqs = SearchQuerySet().models(Entry).filter(categories=category.pk)