Sono presenti istanze del modello di evento che possono appartenere a una o più istanze del modello di organizzazione. Ho implementato haystack 2.0.0 per indicizzare tutti i miei eventi. Ecco un indice di ricerca di esempio.Django Haystack: filtra la query in base a più elementi in un elenco.
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()
La mia domanda è come faccio a creare una query SearchQuerySet che filtra eventi in base a una o più organizzazioni. Ad esempio, io voglio trovare tutti gli eventi che appartengono al "orgnization1" e "organization3" (dove l'elenco delle organizzazioni può essere di qualsiasi lunghezza lungo)
Come Django interrogare potrebbe essere simile a questa:
Event.objects.filter(organization__in=[orgnization1, organization3]).filter(...)
Come si traduce in una query sul pagliaio? Questo è il mio tentativo, ma io non so davvero cosa sto facendo ...
organization_list = [organization1.slug, organization2.slug]
SearchQuerySet().filter_or(organization__contains=organization_list)
Ecco un esempio di come i miei modelli guardano:
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)
...
Ogni aiuto è molto apprezzato.
Mi rendo conto che questo è abbastanza vecchia, ma si può .filter (organization_slug__in = organization_list) – Nagyman
codice Nizza: D, grazie –