DjangoのQuerySetで既存のカラムで足し算引き算してannotateで新しいカラムを生成する
今回はDjangoのQuerySetを使っているときに既に存在するmodelのカラムで足し算引き算をしてannotate関数を使って新しいカラムを生成する方法についてご紹介いたします。
DjangoのQuerySetで既存のカラムで足し算引き算してannotateで新しいカラムを生成する
例えば、DjangoのmodelとしてBookモデルがあり、実用的ではないかもしれませんがBookモデルにint型のpriceと同じくint型のtax_priceというものがあったとします。
このBookモデルのpriceとtax_priceを足したsum_priceというカラムが欲しいとしましょう。
上記の場合、annotate関数とDjangoのF関数を使うことで下記のように取得することが可能です。
1 2 |
from django.db.models import F Book.objects.all().annotate(sum_price=(F('price')+F('tax_price')) |
F関数は引数にカラム名を設定することによって、DB内の値をDjangoが受け取らずに直接DB内で参照することが可能です。
また、annotate関数を使うことによって、一時的に新たなカラムをQuerySetに付与することができます。
終わりに
今回はDjangoのQuerySetを使っているときに既に存在するmodelのカラムで足し算引き算をしてannotate関数を使って新しいカラムを生成する方法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません