如何解决/ add / 4 /'Item'对象上的AttributeError没有属性'filter'
我在/ add / 4 / 处收到错误 AttributeError,'Item'对象没有属性'filter'
at
if order.item.filter(item__id = item.id).exists():
我正在尝试将基于ID的商品添加到购物车。该商品已添加到购物车表格中,但显示上述错误。
我的 views.py
@login_required(login_url='/login/')
def add_to_cart1(request,id):
item = get_object_or_404(Item,id=id)
order_item,created = CartItem.objects.get_or_create(
item=item,user=request.user,)
order_qs = CartItem.objects.filter(user=request.user,ordered=False)
if order_qs.exists():
order = order_qs[0]
if order.item:
if order.item.filter(item__id = item.id).exists():
order_item.quantity += 1
order_item.save()
messages.success(request,"Item qty was updated.")
return redirect("ItemAddedToCart")
else:
order.item.add(order_item)
messages.success(request,"Item was added to your cart.")
return redirect("ItemAddedToCart")
else:
order = CartItem.objects.create(
user=request.user,)
order.item.add(order_item)
messages.success(request,"Item was added to your cart.")
return redirect("ItemAddedToCart")
我的 models.py
class CartItem(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL,null=True,on_delete=models.CASCADE)
item = models.ForeignKey(Item,on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True,null=True)
updated_at = models.DateTimeField(auto_now=True,null=True)
quantity = models.IntegerField(default=1)
ordered = models.BooleanField(default=False)
解决方法
您的模型为Item
创建了一个FK,这意味着每个CartItem
实例都有对单个项目的引用。
从您的问题中尚不清楚过滤器的设计用途,但是您似乎只是想获取与此卡片项目相关的对象(Item
)。
您可能正在一个看起来像这样的代码块后面:
order_qs = CartItem.objects.filter(user=request.user,ordered=False)
for cart_item in order_qs:
if cart_item.item:
order_item.quantity += 1
order_item.save()
messages.success(request,"Item qty was updated.")
return redirect("ItemAddedToCart")
尽管我不知道order_item
是什么,但很有可能我在这里误解了模型
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。