6

モデルのフィルター処理された部分のみを SeachQuerySet として持つ方法はありますか?

何かのようなもの:

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

それ以外の

クエリ = SearchQuerySet().models(エントリ)

フィルタリングしたいフィールドは、多面的なフィールドであり、インデックスが付けられていません。

4

1 に答える 1

14

検索インデックスには関係が保存されないため、「フラット」です。カテゴリの ID のみをインデックスに追加できます(これには -methodEntryを使用する必要があることに注意してください)。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)
于 2012-08-13T11:58:45.483 に答える