У меня есть такая модель:
class Program(models.Model):
votes_sum = models.IntegerField(max_length=10, default=0)
voters_counter = models.IntegerField(max_length=10, default=0)
...
Мне нужны 10 лучших программ, поэтому я пробовал в моих views.py:[1229 visiblebest_rated = Program.objects. filter (Q (creator__profile__type = 'us')). extra (select = {'total': 'sizes_sum / sizes_counter'}). extra (order_by = ['total']) [: 10]
Проблема в том, когда ни один пользователь не проголосовал, потому что происходит деление на ноль.
Я не мог найти другого способа решить эту проблему. Любая помощь? Пожалуйста.
У меня есть решение попроще, чем я думал. Просто исключите записи без голосов!
best_rated = Program.objects.filter (Q (creator__profile__type = 'us') & ~ Q (sizes_counter = 0)). Extra (select = {'total': 'voices_sum / sizes_counter'}). Extra (order_by = ['Всего'])[: 10]