__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 в этой Ссылка