__init__() отсутствует 1 требуемый аргумент только для ключевого слова: 'creator'

Я получаю ошибку типа при установке текущего пользователя в поле created_by в моей модели

forms.py

class MyModelForm(forms.ModelForm):
    class Meta:
        model = Model
        fields = ('name',)

        def __init__(self, *args, creator, **kwargs):
            super().__init__(*args, **kwargs)
            self.creator = creator

        def save(self, *args, **kwargs):
            self.instance.created_by = self.creator
            return super().save(*args, **kwargs)

views.py

class CreatEEView(LoginRequiredMixin, CreateView,):
    form_class =  ''
    template_name = ''
    success_url = ''

Models.py

class MYmodel(models.Model):
    name = models.CharField()
    created_by = models.ForeignKey()

Вам не нужно использовать пользовательскую форму для этого, потому что CreateView создает ModelForm за вас, что вы можете сделать следующим образом:

from django.db import models

class MYmodel(models.Model):
    name = models.CharField()
    created_by = models.ForeignKey()

Затем вы можете переопределить метод form_valid. Этот метод вызывается, когда действительные данные формы были размещены.

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.edit import CreateView
from myapp.models import MYmodel

class CreatEEView(LoginRequiredMixin, CreateView):
    model = MYmodel
    fields = ['name']

    def form_valid(self, form):
        form.instance.created_by = self.request.user
        return super().form_valid(form)

Вы можете найти тот же пример в документах Django в этой Ссылка

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