Упорядочивание строковых полей в django QuerySet по определенному порядку
У меня есть строковое поле status
, которое принимает 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')