Django Haystack: фильтрация запросов по нескольким элементам в списке.

У меня есть экземпляры модели событий, которые могут принадлежать одному или нескольким экземплярам модели организации. Я реализовал 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(...)

Как мне перевести это на запрос стога сена? Это моя попытка, но я действительно не знаю, что делаю ...

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)
    ... 

Любая помощь приветствуется.

11
задан Joe J 3 February 2012 в 17:16
поделиться