Django注释外来模型的平均值

时间:2020-09-04 13:01:49

标签: django annotations

文章和评论两个模型,关系是一对多的(一篇文章有​​很多评论)。有些文章没有任何评论。

我想按评论评分订购文章,因此我在AVG中使用了注释:

ArticleQueryset.annotate(rating=models.Avg('reviews__rating')).order_by('-rating')

问题是没有评论的文章的评分值为False,并且以某种方式出现在最高评分之前。结果是,第一个结果没有任何评分,然后显示最高评分的文章。

1 个答案:

答案 0 :(得分:1)

order_by() 方法中将nulls_last=True用作

ArticleQueryset.annotate(
    rating=models.Avg('reviews__rating')
).order_by(models.F('rating').desc(nulls_last=True))
相关问题