2011-11-29 91 views
0

我有一个表,列,a,b,c,d,e。一个简单的order_by()查询

每列都给出一个随机数值。

我可以通过该数值进行排序。

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的网站,但找不到任何东西

+1

看看http://stackoverflow.com/questions/3160798/django-order-by-sum-of-fields – second

+0

是的,谢谢。正是我在寻找的 –

回答

1

最好的办法是使用extra

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

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

+0

我不认为你可以举一个例子。对不起,即时新和无知 –

+0

例如:querystr =“从表顺序选择a,b,c,d,e”;如果您使用复选框来选择要由您排序的列,请每次添加列名称,例如querystr + =“a”.... – Coder

+0

对不起,它似乎不适用于我 –