我正在使用django在我的电子商务网站上设置购物车功能。所有项目都以cart_item
s的形式输入MySQL表格中。为什么同一个对象抛出一个“NoneType”对象属性错误在一个实例中而不是其他的?
的问题之前,相关代码:
charm = False
if postdata.get('charm_sku'):
charm_sku = postdata.get('charm_sku','')
ch = get_object_or_404(Charm, sku=charm_sku)
#get products in cart
cart_products = get_cart_items(request)
product_in_cart = False
# check to see if item is already in cart
for cart_item in cart_products:
if cart_item.product.id == p.id:
if charm == True:
if cart_item.charm.id == ch.id:
# update the quantity if found
cart_item.augment_quantity(quantity)
product_in_cart = True
else:
if cart_item.charm.id == "":
# update the quantity if found
cart_item.augment_quantity(quantity)
product_in_cart = True
编辑: 我修改了代码,如上图所示,导致这两个if cart_item.charm.id
的扔attirbuteerror:'NoneType' object has no attribute 'id'
。在某种程度上,我觉得这已经改善了这种情况,因为我怀疑的第一个似乎为“成功”,其实第一if charm == True
失败,因此从来没有测试第一if cart_item.charm.id == ch.id
。问题依然存在:当For循环清楚地声明cart_item,并且cart_items明确地将魅力列和id分配给所述列时,为什么这会拖拽AttributeError?
编辑2: 我不能从嵌套如果参考cart_item?这是我能想到的唯一事情,但同时我觉得我应该能够,所以也许这是错误的?
而不是'如果x ==真:ELIF X ==假:'最好是使用成语'如果x:其他:'。如果你必须确定它们是否完全等于'True'或'False',则应该使用'如果x为真:elif x为False:'这是因为(例如)0 == False'为真,但“0是假”是错误的。 – SethMMorton 2013-04-08 23:55:13
不,我没有理由,只是原型代码中的一个愚蠢的语义错误。将修复生产。 – fildred13 2013-04-09 00:00:30