如何将项目插入 Django 查询集的中间?

How to insert item to the middle of a Django queryset?

我正在尝试按“州”然后“城市”排序的顺序对查询集进行排序,但我希望城市“其他”始终排在最后每个状态的项目。 我想我可以通过按“州”选择然后在末尾附加“其他”然后组合每个州的所有查询集来做到这一点。有没有更简单的方法来做到这一点?谢谢。

from django.db.models import Case, When, Value, CharField

SomeModel.objects.annotate(
    custom_city_order=Case(
        When(city="Other", then=Value("ZZZ")),
        output_field=CharField(),
    )
).order_by('state', 'custom_city_order')

这将帮助您在注释上放置自定义值,然后您可以按此注释值进行排序。因此,您可以根据需要设置值并对其进行排序。