Возврат меньшего количества товаров

Hi I have a problem during my django-app development. I wanted to add cart feature to my e-commerce website but I have a problem. I get an error get() returned more than one Item -- it returned 4! I bet it is caused by line item = Item.objects.get_or_create(Item)` I have not specified ID and I have no idea how to do it or I should just create slugField and pass there the Slug?

views.py

@login_required
def add_to_cart(request, *args, **kwargs):
    item = Item.objects.get_or_create(Item)
    order_item,created = OrderItem.objects.get_or_create(active=True)
    order,created = Order.objects.get_or_create(order_user=request.user, 
item=item,
order_items=order_item)
    order.quantity += 1
    order.save()
    messages.success(request, "Cart updated!")
    return redirect('cart-page')

models.py

class OrderItem(models.Model):
    order_item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
    quantity = models.IntegerField(default=1)

    class Order(models.Model):
        order_user = models.ForeignKey(User, on_delete=CASCADE)
        order_items = models.ManyToManyField(OrderItem)
        ordered = models.BooleanField(default=False)
        total = models.DecimalField(default=0.00, decimal_places=2, max_digits=11)

Если вы не укажете поле id, django сделает это за вас. Смотрите docs. Также посмотрите, как работает метод get() docs.

Вернуться на верх