【问题标题】:django customize `default` order bydjango自定义“默认”顺序
【发布时间】:2013-06-12 08:39:49
【问题描述】:

我想通过两个字段的总和对查询集进行排序。
本质上,我想像这样更改模型的默认排序顺序:(不起作用)

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。

【问题讨论】:

  • 您的代码与您的描述不符。这既不是 a) 按这些字段的总和排序,也不是 b) 甚至起作用,因为您不能在订单调用中使用非字段。
  • @Daniel:是的,这就是问题所在,我不能在ordering 中使用非字段,但是如何使用其他方法达到相同的结果?我对问题进行了一些编辑以澄清。

标签: django


【解决方案1】:

如果它适合您的用例,我只需将 sum 添加为新字段并在模型的 save() 上更新它并删除该属性。

【讨论】:

  • 啊,这非常可行.. 傻我.. 虽然我认为原始问题可以等待另一个答案
猜你喜欢
  • 2010-10-05
  • 2019-01-14
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
相关资源
最近更新 更多