我有一个像这样的模型:
class Program(models.Model):
votes_sum = models.IntegerField(max_length=10, default=0)
voters_counter = models.IntegerField(max_length=10, default=0)
...
我需要排名前十的最佳程序,因此我在views.py中进行了尝试:
best_rated = Program.objects.filter(Q(creator__profile__type = 'us')).extra(select={ 'total' : 'votes_sum / voters_counter' }).extra(order_by=['total'])[:10]
问题出现在没有用户投票时,会出现除以零的情况。
我找不到解决方法。有什么帮助吗?拜托了。
我有一个比想象中更简单的解决方案:仅排除没有投票的记录!
best_rated = Program.objects.filter(Q(creator__profile__type = 'us') & ~Q(voters_counter = 0)).extra(select={ 'total' : 'votes_sum / voters_counter' }).extra(order_by=['total'])[:10]