Django Haystack - 搜索非索引的多对多字段

sed*_*eda 6 django many-to-many django-haystack

有没有办法只将模型的过滤部分作为SeachQuerySet?

就像是:

query = SearchQuerySet().models(Entry.filter(categories__name ='something'))

代替

query = SearchQuerySet().models(Entry)

我想要过滤的字段是一个很多字段而且没有索引.

Ber*_*ant 14

搜索索引不存储任何关系,因此它是"平坦的".您只能将类别的ID添加到索引中Entry(请注意,您必须使用prepare_-method):

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()]
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

category = Category.objects.get(name='something')
sqs = SearchQuerySet().models(Entry).filter(categories=category.pk)
Run Code Online (Sandbox Code Playgroud)