我有一个名为 DemoModel 的模型,我正在查询它,即
DemoModel.objects.all()
我正在获取所有对象,但我想根据条件进行order_by;在我的模型中有一个名为 demo_field 的字段,
如果该字段值为“测试”,则应使用该条件对其进行排序。
DemoModel.objects.all().order_by(demo_field='Testing')
有这样的事吗?或者我们必须创建自定义的order_by?
答案 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')