Django - CreateView с указанием формы для использования из forms.py

Я пытаюсь использовать форму, которую я определил в forms.py, в CreateView, поскольку у меня есть классы css и метки полей, которые я хочу применить.

Документация указывает на объявление поля form_class в CreateView, но попытка установить его как мою ModelForm дает мне ошибку TypeError 'AssessmentForm' object is not callable

class AssessmentCreateView(LoginRequiredMixin, generic.CreateView):
    model = Assessment
    form_class = AssessmentForm()
...

Какова правильная реализация установки ClassBasedView для использования ModelForm?

Причина, по которой вы получаете эту ошибку, заключается в том, что вы вызываете this AssessmentForm(). Поэтому вместо того, чтобы использовать this

form_class = AssessmentForm()

используйте это:

form_class = AssessmentForm

И если вы глубоко погрузитесь в CreateView, то узнаете, что этот class использует FormMixin, который имеет имя метода get_form, с реализацией, подобной этой.

def get_form(self, form_class=None):
    """Return an instance of the form to be used in this view."""
    if form_class is None:
        form_class = self.get_form_class()
    return form_class(**self.get_form_kwargs())

и get_form_class() просто возвращает ваш self.form_class, примерно так.

def get_form_class(self):
    """Return the form class to use."""
    return self.form_class
Вернуться на верх