gpt4 book ai didi

python - 未绑定(bind)本地错误: local variable 'prod_Available' referenced before assignment

转载 作者:行者123 更新时间:2023-11-30 23:47:17 25 4
gpt4 key购买 nike

我正在开发一个预订系统,并且我有一个保存产品数量的功能...我的问题是为什么我会遇到这个问题?当我

`curl -l -X POST -d "product=3&client=1&function=insert_booking&check_in=2011-12-15&check_out=2011-12-10&no_of_adult=2&no_of_kid=1&quantity=2&first_name=asda&last_name=sdsd&contact=34343" http://127.0.0.1:8000/api/reserve`


Piston/0.3dev (Django 1.3.1) crash report:

Traceback (most recent call last):

File "/home/agileone/workspace/bookproj/api/handlers.py", line 206, in create
prodAvailable = Hotel.objects.get_hotel_sum_quantity(attrs['product'], attrs['check_in'], attrs['check_out'])

File "/home/agileone/workspace/bookproj/../bookproj/booking/models.py", line 49, in get_hotel_sum_quantity
if prod_Available <= 0:

UnboundLocalError: local variable 'prod_Available' referenced before assignment

但是当我在 python shell 中测试时,它工作正常:

>>> from booking.models import *
>>> Hotel.objects.get_hotel_sum_quantity(3, '2011-12-10', '2011-12-15')1

这是我在 models.py 中的代码

def get_hotel_sum_quantity(self, product_id, checkin_date, checkout_date):
check_in = datetime.datetime.strptime(checkin_date, '%Y-%m-%d')
check_in = check_in.date()
start_date = check_in.day

check_out = datetime.datetime.strptime(checkout_date, '%Y-%m-%d')
check_out = check_out.date()
end_date = check_out.day

prod = Product.objects.get(id=product_id)

for x in range(start_date,end_date + 1):
x = x - start_date
delta = datetime.timedelta(days=x)
all_date = check_in + delta
sumOfQuantity = HotelCheck.objects.filter(date_booked=all_date, product=prod).aggregate(Sum('quantity'))['quantity__sum']
if sumOfQuantity == None:
sumOfQuantity = 0
prod_Available = prod.quantity - sumOfQuantity
#global prod_Available
if prod_Available <= 0:
status = 0
else:
status = 1

return status

和我的 handlers.py

if attrs['function'] == 'insert_booking':

prodAvailable = Hotel.objects.get_hotel_sum_quantity(attrs['product'], attrs['check_in'], attrs['check_out'])
if float(prodAvailable) <= 0:
disp = Hotel.objects.get_hotel_show_available(attrs['product'], attrs['check_in'], attrs['check_out'])
return {'status': '0', 'message': 'not OK!'}, disp

任何人都可以解释我的情况并给出一些如何解决它的想法......?谢谢

最佳答案

有时您未进入循环,因此未创建prod_Available,但您尝试引用它。

在循环之前放置prod_Available = 0:

    prod = Product.objects.get(id=product_id)

prod_Available = 0 # !

for x in range(start_date,end_date + 1):
x = x - start_date
delta = datetime.timedelta(days=x)
all_date = check_in + delta
sumOfQuantity = HotelCheck.objects.filter(date_booked=all_date, product=prod).aggregate(Sum('quantity'))['quantity__sum']
if sumOfQuantity == None:
sumOfQuantity = 0
prod_Available = prod.quantity - sumOfQuantity
#global prod_Available
if prod_Available <= 0:
status = 0
else:
status = 1

return status

关于python - 未绑定(bind)本地错误: local variable 'prod_Available' referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com