【发布时间】:2013-06-12 08:39:49
【问题描述】:
我想通过两个字段的总和对查询集进行排序。
本质上,我想像这样更改模型的默认排序顺序:(不起作用)
class Meta:
ordering = ('-my_property_but_not_field', 'my_another_field')
my_property_but_not_field 将汇总模型的两个字段。
我见过使用以下方法的解决方案:
extra:Django order_by sum of fieldsannotate:Order a QuerySet by aggregate field valuemanager:Custom ordering in Django
对于extra 和annotate,我将不得不更改每个需要新排序顺序的代码。
有了manager,我就没有这样的问题了。
但我不知道如何模拟 order_by_1、order_by_2。
【问题讨论】:
-
您的代码与您的描述不符。这既不是 a) 按这些字段的总和排序,也不是 b) 甚至起作用,因为您不能在订单调用中使用非字段。
-
@Daniel:是的,这就是问题所在,我不能在
ordering中使用非字段,但是如何使用其他方法达到相同的结果?我对问题进行了一些编辑以澄清。
标签: django