Query Django: come filtrare gli oggetti per escludere l'id che si trova in un elenco?


89

Come posso filtrare in una query in modo che il risultato escluda qualsiasi istanza di oggetto con ID appartenente a un elenco?

Diciamo che ho:

object_id_list = [1, 5, 345]

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

Qualcosa nello stile di "SELECT * FROM ... WHERE id NOT IN (...)"

Risposte:


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

1
Di cosa si chiama MyObject.objects? Dove posso leggere di questo corso?
Serge

@Serge MyObject sarebbe solo relativo alla tua classe modello Django qualunque essa sia. Quindi, ad esempio, potresti avere UserProfile.objects se hai una configurazione del modello UserProfile.
codeguy

Grazie, ma te lo chiedo bene .objects. Che cos'รจ?
Serge

18

Puoi farlo anche usando l' Qoggetto:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.