Вот ключевая часть из django docs в связанных и несвязанных формах .
Экземпляр формы либо привязан к набору данных, либо несвязан:
blockquote>
- Если он привязан к набору данных, он способен проверять эти данные и визуализировать форму как HTML с данными, отображаемыми в HTML.
- Если он не связан, он не может выполнить проверку (потому что нет данных для проверки!), но он все равно может отображать пустую форму как HTML.
Вы не можете увидеть разницу для формы примера, которую вы дали, потому что форма действительна в стиле «привязанных данных». Давайте расширим форму, добавив поле
age
, тогда разница будет более очевидной.class MyForm(forms.Form): name = forms.CharField() age = forms.IntegerField()
Связанная форма
my_form = MyForm({'name': request.user.first_name})
Эта форма недопустима, поскольку
age
не указывается. Когда вы визуализируете форму в шаблоне, вы увидите ошибки проверки для поляage
.Несвязанная форма с динамическими исходными данными
my_form = MyForm(initial={'name':request.user.first_name})
Эта форма несвязана. Проверка не запускается, поэтому при рендеринге шаблона ошибок не будет.