4

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

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

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

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

(这种情况下的输出是:

<input id="id_name" type="text" name="name" maxlength="200" /><input id="id_description" ....

有什么提示吗?谢谢!

4

3 回答 3

10

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

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

于 2009-03-22T17:07:52.847 回答
2

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

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

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

于 2009-03-22T09:43:06.487 回答
0

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

于 2009-03-22T09:29:56.190 回答