Search code examples
pythondjangodjango-ormannotate

In django, is there a way to directly annotate a query with a related object in single query?


Consider this query:

query = Novel.objects.< ...some filtering... >.annotate(
    latest_chapter_id=Max("volume__chapter__id")
)

Actually what I need is to annotate each Novel with its latest Chapter object, so after this query, I have to execute another query to select actual objects by annotated IDs. IMO this is ugly. Is there a way to combine them into a single query?


Solution

  • No, it's not possible to combine them into a single query.

    You can read the following blog post to find two workarounds.