使用自定义模板时 Django 表单字段的初始值

Posted

技术标签:

【中文标题】使用自定义模板时 Django 表单字段的初始值【英文标题】:Initial value for Django form field when using custom template 【发布时间】:2013-07-06 10:18:28 【问题描述】:

我的 Django 表单中有一个 BooleanField,我希望其初始值为 True,因此我将其定义为:

my_checkbox = forms.BooleanField(label='My Checkbox', help_text='Some help text here', initial=True)

在我的助手中,我有:

helper.layout = Layout(
    Field('my_checkbox', template="custom.html")

Custom.html 看起来像:

<input class="checkboxinput" id="id_ field.name " name=" field.name " type="checkbox">
<span id="hint_id_ field.name " class="help-inline"> field.help_text </span>

我尝试输出 field.initial 的值,但没有任何显示。我知道,如果我手动编码,我会输入&lt;input ... checked&gt;,然后会选中该框。

有没有办法访问字段的“初始”部分并将其设置在我的自定义模板中?谢谢!

【问题讨论】:

【参考方案1】:

在未绑定的表单上确实是 field.initial 。在单选按钮上手动呈现表单的初始值,例如:

% for value, descr in field.choices %
  <input type="radio" name=" field.html_hame " value=" value "% if field.initial == value % checked% endif %> descr <br>
% endfor %

【讨论】:

【参考方案2】:

您可以使用

访问表单字段的初始数据
field.value

【讨论】:

如果用户尚未选择值(表单未绑定),这似乎不起作用。 它在未绑定的表单上对我有用(在 Django 1.6 中),而 field.initial 没有。 其实可以的。如果像我一样,您将表单对象传递给您需要使用 form.field.value 的模板,而不是 form.data.field.value form.cleaned_data.field.value

以上是关于使用自定义模板时 Django 表单字段的初始值的主要内容,如果未能解决你的问题,请参考以下文章

如何在渲染django模板时动态设置表单选择字段的初始值

Django 表单模板自定义

在自定义 Django 表单中验证和显示错误

如何在 django 模型表单中添加自定义字段?

以自定义表单呈现模板中的各个字段

使用更改 django 模板中表单字段的名称属性