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

Antworten:


171
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)

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))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.