Django order_by有两个字段,但其中一个需要颠倒

时间:2019-01-09 23:11:36

标签: django django-orm

由于这篇文章,我弄清楚了如何通过多个字段进行订购:

Django: Order_by multiple fields

但是我遇到了一个问题,一个字段是一个数字,另一个字段是一个人的名字。我需要按从最高到最低的降序排列,但在此范围内按名称按字母顺序排序。

我尝试过:

  invoice_items = InvoiceItem.objects.filter(invoice__exact=inv.id).order_by('dues', 'provider').reverse()

它正确处理应收帐款,从最高应收帐组(例如350)到最低应收帐款,但是名称也相反,因此列表的顶部是以Z y等开头的名称...

我需要什么:

Bob  350
Carl 350
Mike 350
Thomas 350
April 200
Gary 200
etc..

相反,我得到的是:

Thomas 350
Mike 350
Carl 350
Bob 350
Gary 200
April 200

不确定要实现此目的的正确语法。

1 个答案:

答案 0 :(得分:2)

我认为它会起作用:

invoice_items = InvoiceItem.objects.filter(invoice__exact=inv.id).order_by('-dues', 'provider')