Tengo un modelo como este:¿Cómo puedo ordenar por un complejo de campo calculado en Django?
class Program(models.Model):
votes_sum = models.IntegerField(max_length=10, default=0)
voters_counter = models.IntegerField(max_length=10, default=0)
...
necesito los 10 programas mejor valorados, por lo que, lo he intentado en mi views.py:
best_rated = Program.objects.filter (Q (creator__profile__type = 'nosotros')) extra (seleccione = { 'total': 'votes_sum/voters_counter'}..) extra (order_by = [ 'total']) [10]
El problema es cuando ningún usuario ha votado, porque ocurre una división por cero.
No he podido encontrar otra manera de solucionar esto. ¿Alguna ayuda? Por favor.
Tengo una solución más simple de lo que pensaba. ¡Simplemente excluya los registros sin votos!
best_rated = Program.objects.filter (Q (creator__profile__type = 'nosotros') & ~ Q (voters_counter = 0)) extra (seleccione = { 'total': 'votes_sum/voters_counter'}).. Supletoria (order_by = [ 'total']) [10]