/ / Anzahl der Anmerkungselemente in Django Query ausschließen - Python, Django

Ausschließen der Anzahl der Anmerkungselemente in Django Query - Python, Django

Ich frage die Datenbank ab, um eine Liste von Objekten zu erhalten, und verwende annotate (), um zu zählen, wie viele zugehörige Elemente sie haben.

Ich möchte nur Objekte mit einem zugehörigen zurückgeben item über 5 zählen.

lists = List.objects.exclude(picture_url="").exclude(picture_url__icontains="google").select_related("city","city__country", "user", "user__profile").annotate(items_added=Count("item"))[:10]

Antworten:

4 für die Antwort № 1
lists = List.objects.exclude(picture_url="") 
.exclude(picture_url__icontains="google") 
.select_related("city","city__country", "user", "user__profile") 
.annotate(items_added=Count("item")) 
.filter(items_added__gt=5)[:10]

Im Gegensatz zu aggregate () ist annotate () kein TerminalKlausel. Die Ausgabe von Die Annotate () - Klausel ist ein QuerySet. Dieses QuerySet kann geändert werden mit einem anderen QuerySet-Vorgang, einschließlich filter (), order_by oder sogar weitere Aufrufe zum Annotieren ().