如何将项目插入 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')
这将帮助您在注释上放置自定义值,然后您可以按此注释值进行排序。因此,您可以根据需要设置值并对其进行排序。
我正在尝试按“州”然后“城市”排序的顺序对查询集进行排序,但我希望城市“其他”始终排在最后每个状态的项目。 我想我可以通过按“州”选择然后在末尾附加“其他”然后组合每个州的所有查询集来做到这一点。有没有更简单的方法来做到这一点?谢谢。
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')
这将帮助您在注释上放置自定义值,然后您可以按此注释值进行排序。因此,您可以根据需要设置值并对其进行排序。