DjangoでSumの集計結果がNoneだった時に初期値を0にする

テーブルの一部のカラムの値をSumしていると、集計対象のレコードが存在しなかった場合、Sumの結果には通常Noneが返されます。

ここで処理が終わりであればよいのですが、その後そのSumした集計値を使っていろいろ計算を続ける場合、数値として認識されないため、その後の計算の結果もすべてNoneになってしまいます。

なので、もしSumした結果がNone(合計する行が存在しない場合も含め)であれば、0としておくと都合が良いことになります。

Coalesceを使います。

ポイントとしては、annotateが連続する場合、最後のannotateの中でCoalesceを使います。

annotateが連続しない場合、最初のSum時に、

とやってもOKです。

 

参考サイト)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*