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