New in Django 3.2.
Django supports using transforms in expressions.
For example, to find all Entry objects published in the same year as they were last modified:
To find the earliest year an entry was published, we can issue the query:
This example finds the value of the highest rated entry and the total number of comments on all entries for each year:
>>> Entry.objects.values('pub_date__year').annotate( ... top_rating=Subquery( ... Entry.objects.filter( ... pub_date__year=OuterRef('pub_date__year'), ... ).order_by('-rating').values('rating')[:1] ... ), ... total_comments=Sum('number_of_comments'), ... )