Как решить Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Вместо этого используйте cart.set() Ошибка?

В моем коде cart является классом модели, где products является ForeignKey, а в классе модели OrderItem, где cart является ManyToManyField. Когда я хочу сохранить OrderItemForm, возникает описанная выше ошибка. models.py

class OrderItem(BaseModel):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    cart = models.ManyToManyField(Cart, blank=True)
    name = models.CharField(max_length=200)
    district = models.ForeignKey(District, on_delete=models.CASCADE)
    city = models.CharField(max_length=200)
    postal_code = models.SmallIntegerField()
    area = models.TextField()
    phone = models.CharField(max_length=12)
    status = models.CharField(max_length=20, choices=STATUS_CHOICE, default="accepted",blank=True, null=True)
    email = models.EmailField()

    def __str__(self):
        return self.user.email

Views.py

def checkout(request):
    context={}
    subtotal =0
    forms = OrderItemForm()
    context['forms'] = forms
    if request.user.is_authenticated:
        user = request.user
        cart = Cart.objects.filter(user=user).order_by('-id')
        for product in cart:
            subtotal += product.total_cost
        context['subtotal'] = subtotal
        customer = Customer.objects.get(user=user)
        if request.POST:
            form = OrderItemForm(request.POST)
            if form.is_valid():
                name = form.cleaned_data['name']
                district = form.cleaned_data['district']
                city = form.cleaned_data['city']
                postal_code = form.cleaned_data['postal_code']
                area = form.cleaned_data['area']
                phone = form.cleaned_data['phone']
                email = form.cleaned_data['email']
                for c in cart:
                    instance = OrderItem(user=user, cart=cart, customer=customer, name=name, district=district, city=city, postal_code=postal_code, area=area, phone=phone, email=email).save()
                    # instance.cart_for_help.add(cart)
                    c.delete()
            else:
                messages.warning(request, form.error)
    return render(request, 'checkout.html', context)

Вам нужно использовать .set(cart) вместо этого.

instance.set(cart)

Вам нужно использовать .set(cart) вместо этого.

instance.set(cart)
Вернуться на верх