[英]How to get average of 6 first elements in a queryset and annotate the value in Django?
[英]Django annotate with aggregated average value
在 django 文档中的以下示例中,如何获取
Publisher.objects.all()
使用书籍评分的平均值计算的字段average_rating
和使用书籍的最大评分计算的max_rating
进行了注释?
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Publisher(models.Model):
name = models.CharField(max_length=300)
num_awards = models.IntegerField()
class Book(models.Model):
name = models.CharField(max_length=300)
pages = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
rating = models.FloatField()
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
pubdate = models.DateField()
class Store(models.Model):
name = models.CharField(max_length=300)
books = models.ManyToManyField(Book)
registered_users = models.PositiveIntegerField()
准确地说,我应该能够在查询集之后打印出这样的东西:
for p in Publisher.objects.all().annotate(...):
print p, p.average_rating, p.max_rating
您可以使用book__rating
访问出版商的书籍,如下所示:
Publisher.objects.annotate(average_rating=Avg('book__rating'), max_rating=Max('book__rating'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.