【问题标题】:Initial value for Django form field when using custom template使用自定义模板时 Django 表单字段的初始值
【发布时间】: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;,然后会选中该框。

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

【问题讨论】:

    标签: django django-forms django-crispy-forms


    【解决方案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 }}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2023-04-09
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多