Mam instancje modelu zdarzeń, które mogą należeć do jednej lub więcej instancji modelu organizacji. Zaimplementowałem stację haystack 2.0.0 do indeksowania wszystkich moich zdarzeń. Oto przykładowy indeks wyszukiwania.Django Haystack: filtruj zapytanie oparte na wielu elementach na liście.
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()
Moje pytanie brzmi: w jaki sposób skonstruować kwerendę SearchQuerySet że filtruje zdarzenia na podstawie jednej lub kilku organizacji. Na przykład, chcę znaleźć wszystkie zdarzenia, które należą do „orgnization1” i „organization3” (gdzie lista organizacji może być dowolnej długości długo)
Jako Django kwerendy może wyglądać następująco:
Event.objects.filter(organization__in=[orgnization1, organization3]).filter(...)
Jak mogę to przetłumaczyć na kwerendę stogu siana? To moja próba, ale ja naprawdę nie wiem, co robię ...
organization_list = [organization1.slug, organization2.slug]
SearchQuerySet().filter_or(organization__contains=organization_list)
Oto przykład tego, jak wyglądają moje modele:
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)
...
Każda pomoc jest mile widziane.
Zdaję sobie sprawę, jest to dość stary, ale można .filter (organization_slug__in = organization_list) – Nagyman
Nicea Kod: D dzięki –