Django:当我从用户的一个购物车中删除商品时,同一商品将从每个用户的购物车中删除

时间:2018-11-28 10:49:44

标签: django e-commerce cart shopping

使用python 3.7

当我将商品添加到购物车时,商品会分别添加到每个用户,但是我在购物车详细信息页面上具有删除按钮,并且 views.py 中的功能如下所示:

def show
  @user = User.friendly.find params[:user_id]
  @post = @user.posts.friendly.find params[:id]

  render :show
end

这些是我的模特

def delete_cart_item(request, item_id):
    user_profile = get_object_or_404(User_Profile, user=request.user)
    shopping_cart = user_profile.shopping_cart_set.first()
    item = shopping_cart.items.get(pk=item_id)
    item.delete()
    return redirect('Sales:cart_details')

这是什么问题?我尝试将class User_Profile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) class Item(models.Model): item_name = models.CharField(max_length=200) item_price = models.IntegerField() item_description = models.CharField(max_length=300) item_bought_price = models.IntegerField() stock_level = models.IntegerField() restock_level = models.IntegerField() class Cart_Item(models.Model): item = models.OneToOneField(Item, on_delete=models.SET_NULL, null=True) class Shopping_Cart(models.Model): ref_code = models.CharField(max_length=15) owner = models.ForeignKey(User_Profile, on_delete=models.SET_NULL, null=True) items = models.ManyToManyField(Cart_Item) 中的on_delete=models.SET_NULL更改为Cart_Item,但这似乎没有任何改变。

还有一个奇怪的问题,当购物车为空并且我添加了第一项时,该项不能从页面中删除,但是我可以将其从外壳中删除。

1 个答案:

答案 0 :(得分:1)

您要删除实际项目,而不是从多对多项目中删除它。您应该这样做:

item = Item.objects.get(pk=item_id)
shopping_cart.items.remove(item)