Django Count()多个字段并按其总和排序

时间:2014-03-22 18:26:12

标签: python sql django

我有一个名为Topiccenter的模型。每个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()

我想获取话题中心并按max entriesmin entries对其进行排序。

我试过

Topiccenter.objects.annotate(sum_entries=Sum('tc_book_entries','tc_journal_entries')).order_by('-sum_entries')

但这不起作用

1 个答案:

答案 0 :(得分:2)

试试这个 -

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')

这应该有用。

相关问题