Tengo un problema con el orden de conjunto de consultas de django.Django: Ordenar por posición ignorando NULL
Mi modelo contiene un campo llamado position
(a PositiveSmallIntegerField), que me gustaría utilizar para solicitar los resultados de la consulta.
Yo uso order_by('position')
, que funciona muy bien.
Problema: position
mi campo es anulable (null=True, blank=True
), porque no wa no para especificar una posición por cada 50000 casos de mi modelo :(
Cuando algunos casos tienen un valor NULL "posición ", order_by
los devuelve en la parte superior de la lista: me gustaría que fueran al final ...
en RAW SQL, solía escribir cosas como 'IF(position IS NULL or position='', 1, 0)
' (ver http://www.shawnolson.net/a/730/mysql-sort-order-with-null.html): ¿es posible para obtener el mismo resultado usando Django, sin escribir SQL sin formato?
¡Muchas gracias!
¡Sí! Funciona bien, muchas gracias mnik700! – user650108
Este es un truco muy bueno, gracias. –
De alguna manera esto no funciona para mí, tal vez porque tengo como campo de ordenamiento: position__name (que es position.name). Demasiado. ¡Ah, espera! Cambié el nombre de null_position a null y parece que a django no le gusta eso. Trabajando ahora, gracias! :) – gabn88