【问题标题】:A simple order_by() query一个简单的 order_by() 查询
【发布时间】:2011-11-29 13:32:12
【问题描述】:

我有一个包含 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 的网站,但找不到任何东西

【问题讨论】:

标签: django django-models


【解决方案1】:

最好的方法是使用extra

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我想你不能举个例子。对不起,我是新手,无知
    • 例如:querystr="SELECT a,b,c,d,e from table order by";如果您使用复选框来选择要排序的列,您可以每次添加列名,如 querystr+="a"....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2018-05-27
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多