Filterung nur auf die Anmerkungen in Django
Nehmen wir das Beispiel von:
http://docs.djangoproject.com/en/dev/topics/db/aggregation/#filter-and-exclude
Publisher.objects.filter(book__rating__gt=3.0).annotate(num_books=Count('book'))
Gibt es trotzdem, um die filter gelten nur für die annotation, so würde es wieder allen Verlagen, mit einigen mit ein num_books=0?
- So, Sie möchten eine Liste aller Verlage, jeweils versehen mit der Anzahl der bewerteten Bücher?
- Ja, und die Liste sollte die Publisher, die haben keine Bücher oder nur Bücher, die mit niedrigen Bewertungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Anmerkung variable in den filter.
Hm, ich denke, dass Sie eine extra-Klausel:
annotate
.Ab Django 2.0 kann man mit
- filter
parameter der aggregation-Funktion:Die Antwort basiert auf einem cheat sheet.
Können Sie versuchen so etwas wie:
Ich nur vor dieser Art von problem. Und wenn meine interpreation für das problem und die erwartete Lösung ist korrekt, dies ist meine funktionierende Lösung:
Publisher.objects.annotate(num_books=Count('book')).filter(book__rating__gt=3.0)
Nur die swap-filter & kommentieren position. Dies geschieht in Django in der version 1.9