3 回答

TA貢獻1779條經驗 獲得超6個贊
有幾個問題:
request.user
您應該使用而不是檢索用戶request.user.username
(后者為您提供用戶名,str
而不是User
實例。您不應該真正使用自定義類方法創建對象。相反,使用對象管理器并調用
Cart.objects.create(user=user)
(如果您確實需要創建自定義create()
函數,則應在自定義管理器類上定義它)。
通過這些更改,您應該能夠使用Cart.objects.get_or_create(user=user)
,它返回一個包含您的Cart
對象的元組和bool
指示該對象是否已創建(即首先存在)。
所以放在一起:
def cart(request, pk):
try:
pizza = PizzaInstance.objects.get(id=pk)
# get the topping(s)
topping_1 = int(request.POST["topping1"])
topping = PizzaTopping.objects.get(pk=topping_1)
# get the user
user = request.user
# get the Cart object associated with 'user' or create a new one
order, created = Cart.objects.get_or_create(user=user)

TA貢獻1810條經驗 獲得超4個贊
你在這里做一些奇怪的事情。
Cart.objects.get不會引發 KeyError。它會引發您看到的錯誤:Cart.DoesNotExist。這就是您需要捕獲的錯誤。
此外,由于某種原因,user當您將它傳遞到 except 塊時,您將它包裝在一個列表中。不要那樣做。
try:
order = Cart.objects.get(user=user)
except Cart.DoesNotExist:
order = Cart.create(user)
order.save()
添加回答
舉報