0
我正在使用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'對象不是可下載的」,但第二個解決方案完美無缺。謝謝! – Wessi