2017-09-18 14 views
0

私はフロントエンドでいくつかのグラフを描画するためにPyGalを使用しています。私のジャンゴ・ビュー[基づく関数]はいくらか次のようになります。Djangoでの繰り返しの値集計とSUMに関するクエリ

def random_view(request): 
    values_list = list() 
    camera_dict = dict() 
    bar_chart = pygal.Bar(spacing=60, explicit_size=True, width=2000, 
          height=800, pretty_print=True, margin=5, x_label_rotation=60, show_minor_x_labels=True) 
    bar_chart.x_labels = ['8 AM', '9 AM', '10 AM', '11 AM', '12 Noon', '13 PM', '14 PM', 
          '15 PM', '16 PM', '17 PM', '18 PM', '19 PM', '20 PM', '21 PM', '22 PM', '23 PM'] 

    if request.method == 'GET': 
     profile = Profile.objects.get(user_profile=request.user) 
     store_qs = Store.objects.filter(brand_admin=profile) 
     for store in store_qs: 
      cam_qs = Camera.objects.filter(install_location=store) 
      for cam in cam_qs: 
       for x in range(10, 22): 
        value = PeopleCount.objects.filter(
         timestamp__date='2017-09-06', timestamp__hour=x, camera=cam).aggregate(Sum('people_count_entry'))['people_count_entry__sum'] # noqa 
        values_list.append(value) 
       bar_chart.add(str(cam), values_list) 
     context = {'test': camera_dict, 'fun': bar_chart.render_data_uri()} 

    return render(request, 'reports/report_daily.html', context) 

問題は、私は2つの異なるカメラオブジェクトに対して同じ値を取得しています。


情報:例えば

storeがある場合two camerasのはcam1 and cam2を言わせて。私は、両方のカムのために同じではないはずの値を得ている。

私は間違いをどこにしているのか分かりません。事前におくる

感謝を助ける:)

+0

ここで、 'values_list'をインスタンス化していますか? – aumo

+0

@aumo:edited。見てください。 –

答えて

2

問題は、あなたが「カメラ」ループの外values_list定義することです。あなたがやっていることは、すべての店舗のすべてのカメラの値を含むリストを作成することです。各カメラのリストを作成するには、values_listを「カメラ」ループ内でインスタンス化します。

#... 
for cam in cam_qs: 
    values_list = [] 
    # ... 
関連する問題