Почему метод save() должен иметь аргумент self в django?

Я пытаюсь решить эту проблему уже более 3 дней, но пока не могу ее решить. Я знаю самоиспользование для метода, который находится под классом, но я работаю с базовым представлением метода, так почему эта ошибка возникает, когда я пытаюсь сохранить модель OrderItem?

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():
                instance = OrderItemForm.save(commit=False)
                instance.user = user
                instance.customer = customer
                instance.cart = cart
                instance.save()
            else:
                messages.warning(request, form.errors)
    return render(request, 'checkout.html', context)

ошибка командной строки:

    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\bitspirits\rndm\shop\views.py", line 76, in checkout
    instance = OrderItemForm.save(commit=False)
TypeError: save() missing 1 required positional argument: 'self'

Необходимо инициировать экземпляр класса перед вызовом метода на нем. Только статический метод можно вызвать без создания экземпляра класса.

Вам необходимо изменить строку:

instance = OrderItemForm.save(commit=False)

to

instance = form.save(commit=False)

поскольку form является экземпляром OrderItemForm

или

 instance = OrderItemForm()

зависит от того, что именно вы хотите

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