【问题标题】:Django: instance one field from formDjango:从表单中实例一个字段
【发布时间】:2019-08-13 09:54:43
【问题描述】:

我有一个表单(一个普通的,不是 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。

考虑到这个表单有多个字段,但我需要加载表单,只填充这个字段,其余的默认(空白)。

【问题讨论】:

    标签: django forms view field instance


    【解决方案1】:

    您需要initial 参数。

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

    【讨论】:

      【解决方案2】:

      您可以使用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]:
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2023-03-29
        • 2014-12-28
        • 2011-08-03
        • 2011-05-21
        相关资源
        最近更新 更多