2012-09-06 58 views
0

我们有一个简单的模型:汇总查询结果通过自定义字段在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,但我想避免它...

回答

0

的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" 
+0

我可以按YEAR(创建)聚合吗? –

+0

当然你可以通过链接https://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-over-a-queryset和makr作为正确的,如果你满意 – user1614526

+0

没有聚合功能年。我无法将'created__year'用作聚合字段...... –