Django对列表进行排序 - 复杂查询

时间:2011-12-24 18:43:19

标签: django django-models django-queryset

这些是我的模特

class Review(models.Model):
    reviewHeader = models.CharField(null=False,default="",max_length=200)

class ReviewRate(models.Model):
    review = models.ForeignKey(CompanyReview,null=False,default=0)
    isPositive = models.BooleanField(blank=True)

我想按正面投票的数量对评论进行排序。

Review.objects.all().annotate(ss = Sum('rev__reviewrate__isPositive')).order_by('-ss')

对具有最大正投票的评论进行排序。但是,如果一篇评论有2个正面和2个负面评论,那么它就会在只有一个正面投票的评论之前出现。

但我想按(正面 - 负面)计数对它们进行排序。

我怎样才能做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

对于这类事情,我认为您需要为您的模型添加新字段,如num_of_pos_votes,然后您可以使用此字段进行排序