Django形式和初始值的奇怪问题

时间:2013-12-24 14:19:33

标签: django django-forms

我疯狂地试图理解为什么我在表单中使用“initial”定义的默认值不会打印在我的模板中。表格是这样的:

class MyForm(forms.Form):
    # ...
    proximity = forms.IntegerField(required=False, initial=50)

在我的模板中:

{{ myForm.proximity }}

打印:

<input id="id_proximity" name="proximity" type="number">

但是,如果我在shell中运行以下内容:

print MyForm()

在输出中我找到:

<input id="id_proximity" name="proximity" type="number" value="50" />

这就是我在模板中所期待的!为什么在shell中它起作用而在模板中却没有?

(我正在使用Django 1.6)

解决!

我在视图中以这种方式初始化表单:

MyForm(self.request.GET)

由于GET中没有数据,因此初始化替换为None:P

1 个答案:

答案 0 :(得分:0)

你说得对..我需要30分钟才能解决:) 我们可以在django的源代码中读取django / forms / fields.py,如下所示:

# initial -- A value to use in this Field's initial display. This value
#            is *not* used as a fallback if data isn't given.

和forms.Form。 _ init _ 第一个参数是数据,因此它意味着您设置数据并将初始值用作后备: )