一个简单的order_by()查询

时间:2011-11-29 13:32:12

标签: django django-models

我有一个包含列的表,a,b,c,d,e。

每列都有一个随机数值。

然后我可以按该数值排序。

query_results = UserProfile.objects.all().order_by('a')

我想要的是能够以2或3或甚至5列的总和进行排序。但我无法弄清楚如何做到这一点。

到目前为止,我的答案有些令人费解。我添加了一个额外的列x。

cursor.execute("UPDATE mysite_userprofile SET x = a+b;")
然后我按x订购。每次我想要将不同的列添加到一起时,我必须更新列x。

这不是我知道的方法。我知道 order_by('a + b')不起作用,但是他们的另一个解决方案同样简单。我查看了django的网站但找不到任何东西

2 个答案:

答案 0 :(得分:2)

最好的方法是使用extra

UserProfile.objects.extra(
    select={'sum_of_fields': 'a + b + c + d + e'},
    order_by=('sum_of_fields',)
)

答案 1 :(得分:0)

我认为您可以在SQL查询中对结果进行排序。在运行SQL查询之前,当您选择列时,可以在后台构建查询字符串。