Django-Abfragen: Wie werden Objekte gefiltert, um die in einer Liste enthaltene ID auszuschließen?

87

Wie kann ich in einer Abfrage filtern, damit das Ergebnis alle Objektinstanzen mit einer zu einer Liste gehörenden ID ausschließt?

Nehmen wir an, ich habe:

object_id_list = [1, 5, 345]

MyObject.objects.filter(Q(time__gte=datetime.now()) & Q( ... what to put here? ... ))

Etwas im Stil von "SELECT * FROM ... WHERE id NOT IN (...)"

miernik
quelle

Antworten:

171
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)
Ignacio Vazquez-Abrams
quelle
1
Wie heißt das MyObject.objects? Wo kann ich über diese Klasse lesen?
Serge
@Serge MyObject bezieht sich nur auf Ihre Django-Modellklasse, was auch immer es sein mag. So können Sie beispielsweise UserProfile.objects haben, wenn Sie ein UserProfile-Modell eingerichtet haben.
Codeguy
Danke, aber ich frage gleich nach .objects. Was ist es?
Serge
14

Sie können dies auch mit dem QObjekt tun :

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
javed
quelle