2013-06-12 78 views
-1

我想通过两个字段的总和来订购queryset。
从本质上讲,我想改变这样的模式的默认排序顺序:(不工作)django自定义`默认`订单

class Meta: 
    ordering = ('-my_property_but_not_field', 'my_another_field') 

my_property_but_not_field将总结模型的两个领域。

我见过它使用的解决方案:

extraDjango order_by sum of fields
annotateOrder a QuerySet by aggregate field value
managerCustom ordering in Django

随着extraannotate,我将不得不改变每这就需要新的代码排序顺序。

manager,我没有这样的问题。
但我不知道如何模仿order_by_1,order_by_2。

+0

您的代码与您的描述不符。这并不是a)按这些字段的总和排序,或者b)甚至工作,因为您不能在订单调用中使用非字段。 –

+0

@Daniel:是的,这是一个问题,我不能在'排序'中使用非字段,但是如何使用其他方法实现相同的结果?我编辑了一下这个问题来澄清。 – eugene

回答

0

如果它适合您的用例,我会简单地将总和作为新的字段添加并在模型的save()上进行更新并摆脱属性。

+0

啊这是非常可行的..愚蠢的我..虽然我认为原来的问题可以等待另一个答案 – eugene