Django сортировка

Задача отсортировать по совпадению. Есть модель поставщика Retailer с полем city Пример: Поставщик1 имеет city = Москва, а Поставщик2 имеет city = Воронеж и т.п.

Необходимо отсортировать результаты queryset полю city, в начале должны идти те что в городе Москва, потом уже любые другие. Вариант с фильтрацией не подходит хотелось бы именно отсортировать. Прошу помочь.


Ответы (1 шт):

Автор решения: Dima

Попробуй с Case/When

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

Retailer.objects.annotate(
    city_order=Case(
        When(city="Москва", then=Value(1)),
        default=2,
        output_field=IntegerField(),
    )
).order_by('city_order')
→ Ссылка