0
私は、2つのクエリの結果を同時にループするためにzipを使用しています。しかし、結果が同じ長さでない場合もあります。そのような場合は、最初に0に終わるクエリの値を設定します。常に最初のクエリのサブセットとして最初に終わるoccupancy_agencyです。具体的にはとoccupancy_agency_y['available']
です。私は解決策を考え出そうとしましたが、同時に両方の結果をループすることを可能にするzip
と組み合わせる方法を理解できませんでした。異なる長さのループスルークエリ
def occupancy_data(area_id, description, period, agency_id):
occupancy = Occupancy.objects.filter(description=description) \
.values('start_date') \
.annotate(supply_total=Sum('supply')) \
.annotate(available_total=Sum('available')) \
.order_by('start_date')
occupancy_agency = Occupancy.objects.filter(description=description, agency_id=agency_id) \
.values('start_date',) \
.annotate(supply=Sum('supply')) \
.annotate(available=Sum('available')) \
.order_by('start_date')
x = []
_input = occupancy.values('start_date')
for row in _input:
x.append("Uge " + str(int(row['start_date'].strftime("%V"))))
y = []
for occupancy_y, occupancy_agency_y in zip(occupancy, occupancy_agency):
comp_supply = (occupancy_y['supply_total'] - occupancy_agency_y['supply'])
comp_available = (occupancy_y['available_total'] - occupancy_agency_y['available'])
occupancy_combined = ((comp_supply - comp_available)/comp_supply)
y.append(occupancy_combined)
return {'x': x, 'y': y}
恐ろしい:-)は、溶液がとても簡単になります。私はPythonとStackOverflowが大好きです!あなたの最初の解決策は私に "TypeError:int 'オブジェクトは添え字が付いていませんでしたが、2つ目は完全に機能しました。ありがとう! – Wessi