文章和评论两个模型,关系是一对多的(一篇文章有很多评论)。有些文章没有任何评论。
我想按评论评分订购文章,因此我在AVG中使用了注释:
ArticleQueryset.annotate(rating=models.Avg('reviews__rating')).order_by('-rating')
问题是没有评论的文章的评分值为False,并且以某种方式出现在最高评分之前。结果是,第一个结果没有任何评分,然后显示最高评分的文章。
答案 0 :(得分:1)
在 order_by()
方法中将nulls_last=True
用作
ArticleQueryset.annotate(
rating=models.Avg('reviews__rating')
).order_by(models.F('rating').desc(nulls_last=True))