有没有办法只将模型的过滤部分作为SeachQuerySet?
类似的东西:
query = SearchQuerySet()。models(Entry.filter(categories__name ='something'))
而不是
query = SearchQuerySet()。models(Entry)
我想要过滤的字段是一个很多字段而且没有索引。
答案 0 :(得分:14)
搜索索引不存储任何关系,因此它是“平坦的”。您只能将类别的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)