2009-12-09 5 views
7

2つの列の集計値を取得する必要があります。だから最初に複数のものを一緒にしてからsum()を入手してください。以下のコードは自然に動作しませんが、これは説明のためだけのものです。Django:2つの乗算された列の集計値を得る

これはどういうことですか、生のSQLを使うべきですか?

SomeModel.objects 
    .filter(**something) 
    .aggregate(Sum('one_column' * 'another_col')) 

答えて

10

extra()を使用すると、それほど多くの生のSQLは必要ありません。

obj = SomeModel.objects.filter(**something).extra(
    select = {'total': 'SUM(one_column * another_column)'}, 
) 
1
テンプレートのどこかでそれを印刷したい場合は、この方法では、このようなものを使用する必要があります

私がここに答えたのでhttps://stackoverflow.com/a/36024089/4614802 正しい解決方法はdjangoのバージョンに依存します。ジャンゴ> = 1.8を使用.aggregate(Sum(F('field1')*F('field2')) についてはジャンゴ< 1.8使用.aggregate(Sum('field1', field="field1*field2"))

  • については

  • 関連する問題