我是 Django 新手。 看看我的form.py中的以下代码:
class ProfileForm(forms.Form):
name = forms.CharField(label=_("first name"))
lname = forms.CharField(label=_("last name"))
phone= forms.CharField(label=_("phone"))
address = forms.CharField(label=_("address"))
def categorize_fields(self):
categorized_fields = [
[ self.fields["name"], self.fields["lname"] ] ,
[ self.fields["phone"], self.fields["address"] ]
]
return categorized_fields
在我的表单渲染中,我有以下代码无法正常工作:
{% for field_set in form.categorize_fields %}
{% for field in field_set %}
{{ field.label }}
{{ field }}
{% endfor %}
{% endfor %}
field.label
工作正常,但 {{ field }}
未显示渲染的 HTML,而是显示以下内容:
<django.forms.fields.CharField object at 0x000012661591CA90>
但是如果我迭代传递给 form_render.html 的主表单,一切都会正常工作:
{% for field in form.visible_fields %}
{{ field.label_tag }}
{{ field }}
{% endfor %}
我该如何解决这个问题? 谢谢
最佳答案
self.fields
包含对未绑定(bind)字段对象的引用。如果你想访问实际绑定(bind)的字段,你需要直接在 self
上建立索引:
categorized_fields = [
[ self["name"], self["lname"] ] ,
[ self["phone"], self["address"] ]
]
但是,我不建议这样做。相反,请使用第三方库,例如 django-crispy-forms .
关于python - django 无法渲染表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47305179/