¿Puede Django ORM hacer un ORDEN POR un valor específico de una columna?

Tengo una mesa ‘tickets’ con las siguientes columnas

  • ID – clave principal – incremento automático
  • título – varchar (256)
  • status – smallint (6) – Puede tener cualquier valor entre 1 y 5, manejado por Django

Cuando haga un SELECT * Quiero que las filas con el status = 4 en la parte superior, los otros registros las sigan. Se puede lograr mediante la siguiente consulta:

 select * from tickets order by status=4 DESC 

¿Se puede ejecutar esta consulta a través de Django ORM? ¿Qué parámetros deben pasarse al método QuerySet.order_by() ?

 q = Ticket.objects.extra(select={'is_top': "status = 4"}) q = q.extra(order_by = ['-is_top']) 

Hice esto mientras usaba PostgresSql con django.

 from django.db.models import Case, Count, When Ticket.objects.annotate( relevancy=Count(Case(When(status=4, then=1))) ).order_by('-relevancy') 

Devolverá todos los objetos desde Ticket, pero los tickets con status = 4 estarán al principio.

Espero que alguien lo encuentre útil.