如何在Django中根据条件使用orderby?

时间:2017-09-26 13:12:24

标签: django

我有一个名为 DemoModel 的模型,我正在查询它,即

DemoModel.objects.all()

我正在获取所有对象,但我想根据条件进行order_by;在我的模型中有一个名为 demo_field 的字段,

如果该字段值为“测试”,则应使用该条件对其进行排序。

DemoModel.objects.all().order_by(demo_field='Testing')

有这样的事吗?或者我们必须创建自定义的order_by?

2 个答案:

答案 0 :(得分:0)

result = DemoModel.objects.all()
if result.filter(demo_field="Testing").exists():
    result = result.order_by(demo_field)
return result

答案 1 :(得分:0)

您可以使用注释

来实现此目的
from django.db.models import Case, When, IntegerField

result = DemoModel.objects.annotate(testing=Case(When(demo_field='Testing', then=1), default=0, output_field=IntegerField())).order_by('testing')