python - /add/4/ 'Item' 对象的 AttributeError 没有属性 'filter'
问题描述
我在 /add/4/ 'Item' 对象没有属性 'filter'处收到错误 AttributeError
在
if order.item.filter(item__id = item.id).exists():
我正在尝试将基于 id 的项目添加到购物车中。该项目正在添加到购物车表中,但显示上述错误。
我的意见.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")
我的模型.py
class CartItem(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
item = models.ForeignKey(Item, null=True, 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)
解决方案
您的模型创建一个 FK to Item
,这意味着每个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
等是什么
推荐阅读
- swift - 禁用 TextField 用户交互,但在触摸时显示错误视图
- php - 页脚中给出的数组 null
- django - 在 django admin 中删除用户时出现完整性错误
- java - 自动获取商业项目中所有依赖开源工件的许可信息
- angular - SharedModule 导出 ReactiveFormsModule 并且我在另一个模块中导入 SharedModule 并且它不起作用
- android - 将数据插入firebase时如何更新recycleview?
- reactjs - 如何实现带有打印功能的react-pdf
- c++ - sprintf 缓冲区问题,错误分配给 char 数组
- php - 如何从数据列表中获取值 id 并显示标题?
- firebase - 如何使用 Firebase 限制经过身份验证的用户数量