gpt4 book ai didi

python - 如何从 Django 中的外键值取平均值?

转载 作者:行者123 更新时间:2023-12-05 02:57:58 25 4
gpt4 key购买 nike

我在 Django 中有这样的图书模型和评论模型:

class Book(models.Model):

ratings = models.FloatField()


class Review(models.Model):
book = models.ForeignKey(
Book,
on_delete=models.CASCADE,
related_name='reviews',
)
review = models.CharField(max_length=5000)
score = models.PositiveSmallIntegerField(null=True, blank=True,
validators=[MinValueValidator(0), MaxValueValidator(10)])

我如何在图书中创建一个方法来计算评分(这是与特定图书相关的所有评论的平均值)?

最佳答案

您可以实现如下属性:

from django.db.models import Avg

class Book(models.Model):

@property
def ratings(self):
return self.reviews.aggregate(avg_score=Avg('score'))['avg_score']

或者如果您需要批量执行此操作,您可以注释您的查询集:

from django.db.models import Avg

Book.objects.annotate(
<b>avg_rating=Avg('reviews__score')</b>
)

Book 这个查询集产生的对象,将有一个额外的属性 avg_rating,它包含相关 score 的平均值 审核

关于python - 如何从 Django 中的外键值取平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59479908/

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