2017-12-04 22 views
0

クエリでより高度な計算を行うことが可能かどうか疑問に思っていますか?Djangoクエリグループ計算式

ここで私はデータをうまく取得しており、合計(クレジット) - 合計(デビット)の利益を追加したいと考えています。

私のエラー:和( 'クレジット')を計算することができません: 'クレジット' は、集約

trd = Trades.objects.all().filter (acct_id = acct.id) 
     .values ('issue') 
     .annotate (
     cnt = Count ('issue'), 
     debit = Sum ('debit'), 
     credit = Sum ('credit'), 
     shrs = Sum ('shares'), 
     profit = Sum ('credit') - Sum ('debit') 
    ) 
    .order_by ('issue') 

おかげです。

答えて

0

SUM(credit) - SUM(debit)の代わりに、profit = SUM('credit'-'debit').と同等のことができるかどうかを確認してください。希望の結果が得られるはずですが、djangoが不満を持っているSUMのSUMを削除してください。

+0

strange、profit = Sum( 'credit' - 'debit')は、このエラーを返します:サポートされていないオペランドの型は - : 'str'と 'str'です。私が+に変更すると、別のエラーが出る? – diogenes

+0

別のアイデア... aggregate()関数を見てみましょう:https://stackoverflow.com/questions/8616343/django-calculate-the-sum-of-the-column-values-through-query。私はあなたが探しているものに近いと思う。 – ravioli

+0

もう1つ:https://stackoverflow.com/questions/12165636/django-aggregation-summation-of-multiplication-of-two-fields – ravioli