Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Использование множества допускает еще одну ошибку

I am trying to make cart at my e-commerce page, full in django. But I have a problem. Code below after post request occurs an error - Direct assignment to the forward side of a many-to-many set is prohibited. Use order_items.set() instead.When i use set() then i get error object is not iterable. What should I do?

def post(self, request, pk):
        if 'buy' in request.POST:
            item = get_object_or_404(Item, id=pk)
            orderItem, created = OrderItem.objects.get_or_create(order_item=item)
            order, created = Order.objects.get_or_create(order_user=request.user, order_items=orderItem)
            order.save()
            HttpResponse('Items added to the database')

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)

Вы не можете использовать прямое присвоение для поля "многие ко многим". Попробуйте вместо этого следующее:

order, created = Order.objects.get_or_create(order_user=request.user)
order.order_items.add(orderItem)
        
Вернуться на верх