gpt4 book ai didi

python - Django:计算平均值,并按子模型中的字段排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:47 25 4
gpt4 key购买 nike

我有一个 Product 模型,与 Rating 模型具有一对多关系。我之前在产品模型中存储了一个 average_stars 字段,每次为该产品模型添加新评级时我都会更新该字段。我将在 views.py 中有一个函数,它将返回所有 Product 实例的 QuerySet,按 average_star 排序。有没有一种方法可以使用 .aggregate 和 .order_by 的组合,或任何类似的东西,更动态地做到这一点。

换句话说,有没有一种方法可以计算每个产品的所有评分模型的平均值,并按该属性对它们进行排序?哪种方法更好?

最佳答案

假设您的 Rating 模型有一个 stars 字段,那么您应该使用 annotate :

from django.db.models import Avg
Product.objects.annotate(average_stars = Avg('rating__stars')).order_by('-average_stars')

关于python - Django:计算平均值,并按子模型中的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12614779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com