Aggregationを使う - 基本編
前提として
Django 1.1pre(revision 9742)以降から使える機能です。
Aggregationとは
QuerySetからAvg, Sum, Max, Mix, Countを算出します。
以前は自作しないと実現しませんでした。この機能だけでもバージョンアップをする価値があるのではないでしょうか。
model作成
ベースのモデルを作成します。
from django.db import models
class Book(models.Model):
title = models.CharField(max_length = 100)
price = models.IntegerField()
Aggregationを試す
shellモードで確認します。
manage.py shell
下準備
>>>from appname.models import Book
>>>Book.objects.create(title = 'Django x Python', price = 2079)
>>>Book.objects.create(title = u'開発のプロが教える標準Django完全解説 - Webアプリケーションフレームワーク', price = 4410)
>>>from django.db.models import Avg, Max, Min, Count, Sum
平均(Avg)を取得
>>>Book.objects.aggregate(Avg('price')
{'price__avg': 3244.5}
最大(Max)と最小(Min)を取得
>>>Book.objects.aggregate(Max('price'), Min('price'))
{'price__max': 4410, 'price__min': 2079}
合計(Sum)を取得
>>>Book.objects.aggregate(Sum('price'))
{'price__sum': 6489}
カウント(Count)を取得
>>>Book.objects.aggregate(Count('price'))
{'price__count': 2}
便利です :-)