Django を使用して、e コマース サイトでカート機能をセットアップしています。すべての項目はcart_item
、MySQL テーブルに s として入力されます。
質問の前に、関連するコード:
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
編集: 上記のようにコードを作り直し、 BOTHif 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: ネストされた if から cart_item を参照できませんか? それしか考えられないけど、同時にできるはずな気がするので、それは違うのかな?