【问题标题】:django: form.fields not iterating through instance fieldsdjango:form.fields 不遍历实例字段
【发布时间】:2010-10-14 19:37:14
【问题描述】:

我正在尝试遍历模板中的 form.fields 并用于:

{% for field in form.fields %}
   {{ field }}, 
{% endfor %}

我得到一个字段名称列表(“名称,描述...”),而不是使用以下内容时呈现的 html 代码:

{{ form.name }}, {{ form.description }}

(这种情况下的输出是:

有什么提示吗? 谢谢!

【问题讨论】:

    标签: django forms templates django-templates


    【解决方案1】:

    您想迭代“form”而不是“form.fields”。后者返回 Field 实例,前者返回 BoundField 实例(即使在未绑定表单的情况下),它们呈现它们的小部件 HTML。

    form.visible_fields 和 form.hidden_​​fields 是仅获取表单的可见/隐藏字段的实用方法,但它们也返回 BoundField 实例。它们与 form.fields 没有任何平行关系(我同意这不是最清晰的 API)。

    【讨论】:

      【解决方案2】:

      迭代“form”而不是“form.fields”解决了这个问题。 不知道为什么,因为文档还提供了示例,例如:

      {% for field in form.visible_fields %}
      ...
      

      这也会导致空集。与我的表格未绑定这一事实有关吗?不确定...

      【讨论】:

        【解决方案3】:

        你得到的字段是 django.forms.Field 实例。要从中获取 html 视图,您可以使用小部件功能。 {{ field.widget }}

        【讨论】:

        • {{field.widget}} 也返回一个空字符串。找到解决方案 - 见下文
        猜你喜欢
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 2018-08-22
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多