Reputation: 37934
I have a model named Topiccenter
. and there are many entries in each Topiccenter.
class Topiccenter(models.Model):
name = models.TextField()
class Book(models.Model):
tc = models.ForeignKey(Topiccenter,related_name="tc_book_entries")
name = models.TextField()
class Journal(models.Model):
tc = models.ForeignKey(Topiccenter,related_name="tc_journal_entries")
name = models.TextField()
I want to get topiccenters and sort them by max entries
and min entries
.
I tried
Topiccenter.objects.annotate(sum_entries=Sum('tc_book_entries','tc_journal_entries')).order_by('-sum_entries')
but this is not working
Upvotes: 1
Views: 576
Reputation: 14939
Try this -
Topiccenter.objects.annotate(
sum_books=Sum('tc_book_entries'),
sum_journals=Sum('tc_journal_entries')
).extra({
'select': {
'sum_entries': 'sum_books + sum_journals'
}
}).order_by('-sum_entries')
This should work.
Upvotes: 3