1. ホーム
  2. python

[解決済み] Django の count と group by に相当する機能

2023-02-22 09:25:59

質問

以下のようなモデルを持っています。

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

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

各カテゴリーのアイテムの数(カウントだけ)を選択したいので、SQLでは以下のように簡単になります。

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

これを "the Django way" で行うのと同等のものはありますか?それとも、プレーンな SQL が唯一の選択肢なのでしょうか?私は count( ) メソッドは知っていますが、どのようにして によるグループ化 がそこにフィットするかはわかりません。

どのように解決するのですか?

ここで、私が発見したように、Django 1.1 aggregation API を使ってこれを行う方法です。

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