使用Django的ORM建立了如下Model:
class Book(models.Model): # 书籍名字 name = models.CharField(max_length=300) # 书籍页数 pages = models.IntegerField() # 书籍价格 price = models.DecimalField(max_digits=10, decimal_places=2) # 书籍作则 authors = models.CharField(max_length=300) publisher = models.CharField(max_length300) # 发布日期 pub_date = models.DateField()
现在想查询以字段authors分组,查出每个作者所著所有书的总页书,用sql语句可以很容易的完成此任务:
SELECT *, SUM(pages) AS total_pages FROM Book GROUP BY authors;
那么如何用Django自带的ORM接口实现呢?
方法如下:
from django.db.models import Sum result = Book.objects.values("authors").annotate(total_pages=Sum("pages")).all()
计算每个作者一共写了多少本书籍代码示例:
from django.db.models import Count result = Book.objects.values("authors").annotate(total=Count("name ")).all()
计算书籍的平均价格代码示例:
from django.db.models import Avg result = Book.objects.values("authors").annotate(price=Avg("price ")).all()
参考文献:
http://python.usyiyi.cn/documents/django_182/topics/db/aggregation.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。