如何在基于字段值的条件下在单个 Django 查询中使用多个 order_by

Sta*_*nka 2 django orm sql-order-by django-queryset

如何在单个查询中使order_by字段依赖于字段值?

例如,

  • 如果字段状态== 10,则升序排序
  • 如果字段状态==20,则降序排序

Dim*_*osh 5

您可以使用条件order_by这样的:

from django.db.models import Case, When

Model.objects.order_by(
    Case(When(status='10', then='some_field')).asc(),
    Case(When(status='20', then='some_field')).desc())
Run Code Online (Sandbox Code Playgroud)