2011-11-29 39 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

對不起,它似乎不適用於我 –