如何解决Django注释外来模型的平均值
文章和评论两个模型,关系是一对多的(一篇文章有很多评论)。有些文章没有任何评论。
我想按评论评分订购文章,因此我在AVG中使用了注释:
ArticleQueryset.annotate(rating=models.Avg('reviews__rating')).order_by('-rating')
问题是没有评论的文章的评分值为False,并且以某种方式出现在最高评分之前。结果是,第一个结果没有任何评分,然后显示最高评分的文章。
解决方法
在 order_by()
方法中将nulls_last=True
用作
ArticleQueryset.annotate(
rating=models.Avg('reviews__rating')
).order_by(models.F('rating').desc(nulls_last=True))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。