Sagen wir, es gibt einen Autor und er hat Bücher. Um Autoren zusammen mit der Anzahl der geschriebenen Seiten zu holen, kann folgendes geschehen:Annotate-Filterung - Summe nur einiger verwandter Objekte
Author.objects.annotate(total_pages=Sum('book__pages'))
Aber was, wenn ich Seiten von Science-Fiction-und Fantasy-Bücher getrennt summieren wollte? Ich möchte mit einem Autor enden, der die Eigenschaften total_pages_books_scifi_pages und total_pages_books_fantasy_pages hat.
Ich weiß, ich folgendes tun:
Author.objects.filter(book__category='scifi').annotate(total_pages_books_scifi_pages=Sum('book__pages'))
Author.objects.filter(book__category='fantasy').annotate(total_pages_books_fantasy_pages=Sum('book__pages'))
Aber wie es in einem queryset?