1つ以上の組織モデルインスタンスに属するイベントモデルインスタンスがあります。私はhaystack 2.0.0を実装して、すべてのイベントをインデックスに登録しました。次に、検索インデックスの例を示します。Django Haystack:リスト内の複数の項目に基づくフィルタクエリ。
class EventIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
organization_slug = indexes.CharField(model_attr='organization__slug',
weight=5.0)
organization_name = indexes.CharField(model_attr='organization__name',
weight=5.0)
name = indexes.CharField(model_attr='name', weight=10.0)
....
def get_model(self):
return Event
def index_queryset(self):
return Event.objects.filter()
私の質問はどのように私は1つまたは複数の組織に基づいてイベントをフィルタリングSearchQuerySetクエリを構築するんです。例えば、私はジャンゴのよう
(ここで、組織のリストが長い任意の長さで可能)「orgnization1」と「organization3」に属するすべてのイベントを見つけたい、それは次のようになります照会:
Event.objects.filter(organization__in=[orgnization1, organization3]).filter(...)
haystackクエリに変換するにはどうすればよいですか?これは私の試みですが、私は本当に私がやっているかわからない...
organization_list = [organization1.slug, organization2.slug]
SearchQuerySet().filter_or(organization__contains=organization_list)
ここに私のモデルがどのように見えるかの例です:
class Event(models.Model):
name = models.CharField(max_length=64)
organization = models.ForeignKey('mymodule.Organization')
...
class Organization(models.Model):
slug = models.SlugField(max_length=64)
name = models.CharField(max_length=64)
...
すべてのヘルプははるかに高く評価されます。
私はこれはかなり古いです実現していますが、.filterできる(organization_slug__in = organization_list) – Nagyman
ニースコード:D、感謝 –