2016-04-07 7 views
-2

sum floatに問題があります。エネルギーを測定する2つのガジェットがあるので、ガジェットによってフィルタリングされているガジェットオブジェクトがいくつかあります。私はリットルを印刷するときfloat djangoを合計する方法

for gadget n gadget: 
d={} 
['energy']=Gadget.objects.filter(gadget=gadget).aggregate(energy=Avg( 'energy'))['energy'] or '0.00' 

s = GadgetDay.objects.filter(gadget=gadget) 
l = [] 
for log in s: 
      l.append(log.energy) 

、それは私に山車を持つ2つのリストを与える: はここに私のコードです。私はこれを合計しようとするとき: k = sum(l) それは私に2つのフロートを返しました。これを次のリストに追加したいときは、フロートのリストを2つ戻しました。モデルのGadgetとGadgetDayは抽象クラスです。すべてのフロートをどのように集計できますか?

+0

リストを表示してください。 1つに追加するときに、どのように2つのリストを取得していますか? – timgeb

+0

また、2つの値を返す 'sum'はほとんどありません。 – timgeb

+0

[52.47,53.16] - ガジェットAのエネルギーとガジェットBのエネルギー[0121、49.21] - – kaja

答えて

4

Pythonレベルで計算するのではなく、.aggregate()を使ってDjangoのORMを使って計算できます。

from django.db.models import Sum 

>>> Gadget.objects.filter(gadget=gadget).aggregate(total_energy=Sum('energy')) 

{'total_energy': 12345.67} 

上記のクエリは、クエリセット内のすべてのenergyフィールドのSum()を返します。

詳細については、aggregation queries in Django

+0

このメソッドは、{'total_energy':105.63} {'total_energy':49.21}という2つの辞書を返します。ガジェット – kaja

+0

あなたの 'energy'フィールドは' Field() 'ですか? – v1k45

+0

ごめんなさい、わかりません – kaja

関連する問題