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()
添加回答
举报