モデルのフィルター処理された部分のみを SeachQuerySet として持つ方法はありますか?
何かのようなもの:
query = SearchQuerySet().models(Entry.filter(categories__name='something'))
それ以外の
クエリ = SearchQuerySet().models(エントリ)
フィルタリングしたいフィールドは、多面的なフィールドであり、インデックスが付けられていません。
モデルのフィルター処理された部分のみを SeachQuerySet として持つ方法はありますか?
何かのようなもの:
query = SearchQuerySet().models(Entry.filter(categories__name='something'))
それ以外の
クエリ = SearchQuerySet().models(エントリ)
フィルタリングしたいフィールドは、多面的なフィールドであり、インデックスが付けられていません。
検索インデックスには関係が保存されないため、「フラット」です。カテゴリの 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)