Joe*_*eya 6 django django-queryset django-views
我有这样的模型:
class Program(models.Model):
votes_sum = models.IntegerField(max_length=10, default=0)
voters_counter = models.IntegerField(max_length=10, default=0)
...
Run Code Online (Sandbox Code Playgroud)
我需要10个评分最高的程序,所以,我在我的views.py中尝试过:
best_rated = Program.objects.filter(Q(creator__profile__type ='us')).extra(select = {'total':'votes_sum/votes_counter'}).extra(order_by = ['total'])[:10]
问题是当没有用户投票时,因为发生了除零.
我找不到另一种方法来解决这个问题.有帮助吗?请.
我有一个比我想象的更简单的解决方案.只需排除没有投票的记录!
best_rated = Program.objects.filter(Q(creator__profile__type ='us')&~Q(votes_counter = 0)).extra(select = {'total':'votes_sum/votes_counter'}).extra(order_by = ['total "])[10]
您可以尝试在您的视图中创建一个循环,如下所示:
if ZeroDivisionError:
total = 0
Run Code Online (Sandbox Code Playgroud)
这只是一个起点,但希望它有所帮助
编辑:这可能会更好
try:
total = votes_sum / voters_count
except ZeroDivisionError:
total = 0
return total
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |