У меня есть экземпляры модели событий, которые могут принадлежать одному или нескольким экземплярам модели организации. Я использовал haystack 2.0.0 для индексации всех моих событий. Вот пример поискового индекса.
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()
Мой вопрос заключается в том, как создать запрос SearchQuerySet, который фильтрует события на основе одной или нескольких организаций. Например, я хочу найти все события, принадлежащие "orgnization1" и "organization3" (где список организаций может быть длинной длины)
Как запрос Django, он может выглядеть примерно так:
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)
...
Любая помощь очень ценится.