小编Joe*_*eya的帖子

我如何通过Django中的计算字段复合体进行排序?

我有这样的模型:

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]

django django-queryset django-views

6
推荐指数
1
解决办法
546
查看次数

标签 统计

django ×1

django-queryset ×1

django-views ×1