我有一个这样的模型:

class Category(models.Model):
    name = models.CharField(max_length=60)

class Item(models.Model):
    name = models.CharField(max_length=60)
    category = models.ForeignKey(Category)

我希望 for each 类别 Select 项目的计数(只需计数),因此在SQL中,它将非常简单:

select category_id, count(id) from item group by category_id

有没有等同于做这件事的"Django 方式"?或者,纯SQL是唯一的 Select 吗?我熟悉Django的count( )方法,但是我不认为group by适合那里.

推荐答案

正如我刚刚发现的,下面是如何使用Django 1.1聚合API实现这一点的:

from django.db.models import Count
theanswer = Item.objects.values('category').annotate(Count('category'))

Django相关问答推荐

其中实际的数据库提取在DRF list()中完成

我希望用户能够预订相同的桌子,但不是在同一时间

Django为不同应用程序发出信号

APIView查询未返回任何结果

如何创建复杂的查询?| ChartJS 和 Django

将两个视图重定向到具有不同 url id Django 的一个模板的正确方法

查询 django 模型以找到当月最好的公司销售

data._mutable= 在 Django REST 框架中为真

变量为无时默认模板标签输出的Django设置?

Django {{ MEDIA_URL }} 空白 @DEPRECATED

Django 基于角色的视图?

重命名 django 元素的简单方法

更新Django模型对象多个字段的有效方法

如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

在 Mac OS X 上安装支持 JPEG 的 PIL

Django 什么是反向关系?

使用 Django 部署 Google Analytics

python/django中setattr和对象操作的区别

Jinja2中的多级模板继承?

Django中'related_name'和'related_query_name'属性之间的区别?