汇总查询结果通过自定义字段在Django ORM
问题描述:
我们有一个简单的模型:汇总查询结果通过自定义字段在Django ORM
class Post(models.Model):
created = models.DateField()
title = models.CharField(max_length=210)
content = models.TextField()
是否有实现与Django的ORM的SQL查询的方法吗?
SELECT YEAR(created), COUNT(*)
FROM Post
GROUP BY YEAR(created)
我可以写原始SQL,但我想避免它...
答
的Django提供它自己的查询进行查询设置,你可以像
Post.objects.values('created').annotate(dcount=Count('created'))
不要忘记进口
from django.db.models import Count
反正你也可以检查您的查询像
>>> queryset = MyModel.objects.all()
>>> print queryset.query
SELECT "myapp_mymodel"."id", ... FROM "myapp_mymodel"
我可以按YEAR(创建)聚合吗? –
当然你可以通过链接https://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-over-a-queryset和makr作为正确的,如果你满意 – user1614526
没有聚合功能年。我无法将'created__year'用作聚合字段...... –