Me sorprende que esta pregunta aparentemente aún no exista. Si lo hace, ayúdame a encontrarlo.Anotación condicional de Django
Quiero usar anotar (Recuento) y orden_por, pero no quiero contar todas las instancias de un objeto relacionado, solo aquellas que cumplen un determinado criterio.
A saber, para tener una lista de tragos por el número de cocos verdes que han realizado:
swallow.objects.annotate(num_coconuts=Count('coconuts_carried__husk__color = "green"').order_by('num_coconuts')
De hecho, este parece funcionar, pero por razones que usted señala, es totalmente contrario a la intuición. Esperaría que este conjunto de preguntas me diera todas las golondrinas que alguna vez hayan llevado al menos un coco verde, ordenado por el número total de cocos transportados, independientemente del color. – jMyles
@jMyles: la documentación señala que esto depende del [orden de las cláusulas de anotación y filtro] (https://docs.djangoproject.com/en/1.3/topics/db/aggregation/#order-of-annotate- y -filtrar-cláusulas) - al revés, se comportará como usted describe. –
¿Qué sucede si quiere incluir las golondrinas que no llevan cocos verdes? –