Нет, у вас нет представления, автоматически создающего форму модели для вас, но вы должны перезаписать ее.
Предположим, у вас есть MyModel
, вы можете сделать это:
from myapp.models import MyModel
# views.py
class MyCreateView(CreateView):
model = MyModel
fields = ['something', 'somethingelse'] # these are fields from MyModel
Если вы не укажете, fields
Django выдаст ошибку.
Если вы хотите каким-то образом настроить проверку формы, вы можете сделать это:
# forms.py
class MyForm(ModelForm):
class Meta:
model = MyModel
fields = ['something'] # form fields that map to the model
# ... do some custom stuff
# views.py
class MyCreateView(CreateView):
model = MyModel
form_class = MyForm
Обратите внимание, что мы больше не указываем fields
для MyView
, потому что, если мы захотим, он также выдаст ошибку, и причина в том, что представление будет извлекать поля из формы.
Дополнительная информация: https://docs.djangoproject.com/en/2.1/topics/class-based-views/generic-editing/
Код, который обрабатывает form_class
: https://github.com/django/django/blob/master/django/views/generic/edit.py#L74