[Fixed]-How do I perform a filter on the FK I'm aggregating on in a QuerySet?

1👍

You could try using Case if you’re using Django 1.8+

DISCLAIMER: The following code is an aproximation, I haven’t tested this, so this could not work exactly in this way.

# You will need import:
from django.db.models import Sum, IntegerField, Case, When, Value

with_scores = authors.annotate(total_book_score=Sum(
    Case(When(books__published=2015, then=Value(F('books__score'))),
        default=Value(0), output=IntegerField())  # Or float if it fits your needs.
    )
)
👤Gocht

Leave a comment