我认为这是Django中的一个棘手的问题。
这行不通:
cartitemproduct_in_cart_session.get().quantity+=1
cartitemproduct_in_cart_session.get().save()
如果我检查cartitemproduct_in_cart_session.get()的值。数量,没有更新
这是:
cartitem_session=cartitemproduct_in_cart_session.get()
cartitem_session.quantity+=1
cartitem_session.save()
值已更新
为什么?
(cartitemproduct_in_cart_session是一个查询集,一个过滤器的结果,但我认为这并不重要:cartitemproduct_in_cart_session=cart_session.cartitem_set.filter(product__slug=cartitem.product.slug
))
我猜,不知怎么的,当我做cartitemproduct_in_cart_session.get()。数量,字段数量成为cartitemproduct_in_cart_session.get()的新属性,不再链接到数据库中的字段,但我不明白为什么…
为什么你需要先给一个模型的实例分配一个名称,以便更新该实例的字段?
cartitemproduct_in_cart_session.get().quantity+=1
cartitemproduct_in_cart_session.get () .save ()
等价于:
x = cartitemproduct_in_cart_session.get()
x.quantity += 1
y = cartitemproduct_in_cart_session.get()
y.save()
# note that x and y are different objects with different memory addresses
,
cartitem_session = cartitemproduct_in_cart_session.get ()
cartitem_session.quantity + = 1cartitem_session.save ()
等价于:
x = cartitemproduct_in_cart_session.get()
x.quantity += 1
x.save()