Упорядочивание строковых полей в django QuerySet по определенному порядку

У меня есть строковое поле status, которое принимает 3 значения

  1. "НА_СВОЕМ_ПУТИ"
  2. "ДОСТАВЛЕНО"
  3. "УПАКОВКА"

Я хочу иметь возможность сортировать объекты queryset по полю status, определяя порядок :

"DELIVERED" > "ON_ITS_WAY" > "PACKAGING"

то есть каждая запись со статусом "DELIVERED" появится первой и так далее.

не нашел способа сделать это с помощью Django :(, может ли кто-нибудь помочь? спасибо!

Представим, что ваша модель называется Order, тогда ваш набор запросов будет выглядеть следующим образом.

preference = Case(
        When(status="DELIVERED", then=Value(0)),
        When(status="ON_ITS_WAY", then=Value(1)),
        When(status="PACKAGING", then=Value(2))
)
query_set = Order.objects.alias(preference=preference).order_by('preference')

Проверьте эти методы из официальных документов Django Docs:

Когда

Case

alias

Вернуться на верх