Django:从表单实例一个字段

时间:2019-03-22 11:58:46

标签: django forms view field instance

我有一个表单(常规表单,不是ModelForm),我需要它的其中一个字段来加载初始化的内容。

我需要做这样的事情:

views.py

def my_view(request):
    my_var = MyClass.objects.get(my_filter=my_value).a_var
    form = MyForm(my_form_field = my_var)

我需要初始化MapeoForm字段之一的值。到目前为止,我只知道如何使用类对象实例填充ModelForm。

请考虑到此表单具有多个字段,但是我需要仅在填充此字段的情况下加载表单,而其余字段默认填充(空白)。

2 个答案:

答案 0 :(得分:1)

您需要initial参数。

form = MyForm(initial={'my_form_field': my_var})

答案 1 :(得分:1)

您可以使用initial将动态值加载到Django表单中。

In [6]: from django import forms
   ...: class SampleForm(forms.Form):
   ...:     name = forms.CharField()
   ...:     
   ...: f = SampleForm(initial={'name': 'this is name'})
   ...: print(f)
   ...: 
   ...: 
<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" value="this is name" required id="id_name" /></td></tr>

In [7]: 

您还可以将默认初始值传递给字段本身,

In [7]: from django import forms
   ...: class SampleForm(forms.Form):
   ...:     name = forms.CharField(initial='this is default name')
   ...:     
   ...: f = SampleForm()
   ...: print(f)
   ...: 
   ...: 
   ...: 
<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" value="this is default name" required id="id_name" /></td></tr>

In [8]: