[pyar] [Django] order_by() de un QuerySet no está funcionando como pretendo
Pablo Ziliani
pablo en kultroom.com
Mie Ene 19 12:39:12 ART 2011
On 01/19/2011 02:58 AM, Ernesto Savoretti wrote:
> 2011/1/19 Patricio Molina<patriciomolina en gmail.com>:
>> Vean lo que me devuelve cuando hago un query:
>> In [1]: from saraza.models import Saraza
>> In [2]: [s.rating for s in Saraza.objects.all()]
>> Out[2]: [None, 4.0, 3.0]
>> Uno de los objetos del modelo Saraza no tiene ningún objeto del modelo
>> Rating asociado, por eso el rating es "None". No lo está ordenando como yo
>> quiero: lo que pretendo es que vaya realmente en orden descendente (por
>> ejemplo: [4.0, 3.0, ..., None, None, None] y no [None, None, None, 4.0, 3.0,
>> ...] como hace ahora.
>> Alguna idea de por qué sucede esto
> Bueno, me parece que en todo caso el problema es que pareciera que
> estás asumiendo que: None = 0.0, lo cual no parece ser el caso.
>
> (...)
>
> y/o cómo puedo solucionarlo?
>
>> In [2]: [s.rating if s.rating else 0.0 for s in Saraza.objects.all()]
El problema es que estás haciendo en python algo que sería mejor que
haga la BBDD, además de que el resultado probablemente no le sirva
(probablemente en la página quiera tener disponibles todos los datos de
los Saraza(), no solo el rating)
Fijate esta solución, me pareció suficientemente elegante:
http://stackoverflow.com/questions/2572201/django-orm-ordering-w-aggregate-functions-none-special-treatment
More information about the pyar
mailing list