Zapytania Django: jak filtrować obiekty, aby wykluczyć identyfikator znajdujący się na liście?


87

Jak mogę filtrować zapytanie, aby wynik wykluczał wszystkie instancje obiektów o identyfikatorze należącym do listy?

Powiedzmy, że mam:

object_id_list = [1, 5, 345]

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

Coś w stylu "SELECT * FROM ... WHERE id NOT IN (...)"

Odpowiedzi:


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

1
Jak się nazywa MyObject.objects? Gdzie mogę przeczytać o tych zajęciach?
Serge

@Serge MyObject będzie po prostu odnosić się do twojej klasy modelu Django, cokolwiek by to nie było. Na przykład możesz mieć UserProfile.objects, jeśli masz konfigurację modelu UserProfile.
kolega z kodem

Dziękuję, ale dobrze o to pytam .objects. Co to jest?
Serge

14

Możesz to również zrobić za pomocą Qobiektu:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.