Django: Когда я удаляю товар из корзины покупок пользователя, тот же предмет удаляется из корзины покупок каждого пользователя - PullRequest
0 голосов
/ 28 ноября 2018

Использование python 3.7

Когда я добавляю товар в корзину, товар добавляется индивидуально каждому пользователю, но у меня есть кнопка удаления на странице сведений о корзине и функция в views.py выглядит так:

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 на on_delete=models.CASCADE, но это ничего не изменило.

Существует также странная проблема, заключающаяся в том, что когда корзина пуста и я добавляю первый элемент, этот элемент нельзя удалить со страницы, хотя я могу удалить его из оболочки.

1 Ответ

0 голосов
/ 28 ноября 2018

Вы удаляете фактический элемент, а не удаляете его из списка «многие ко многим».Вы должны сделать:

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