gpt4 book ai didi

django - 我如何按 Django 中的计算字段复杂排序?

转载 作者:行者123 更新时间:2023-12-04 16:01:52 25 4
gpt4 key购买 nike

我有一个这样的模型:

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 中尝试过:

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]

最佳答案

您可以尝试在您的 View 中创建一个循环,类似于:

if ZeroDivisionError: 
total = 0

这只是一个起点,但希望它有所帮助

编辑:这可能会更好
try:
total = votes_sum / voters_count
except ZeroDivisionError:
total = 0
return total

关于django - 我如何按 Django 中的计算字段复杂排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com