gpt4 book ai didi

python - Django "Instance"表单字段未渲染

转载 作者:行者123 更新时间:2023-12-01 05:42:29 25 4
gpt4 key购买 nike

我正在尝试制作一个动态表单,该表单将允许多个输入并根据需要增加表单的大小。

这是我的表单的简化版本。

class Email(django.forms.Form):
givenName = django.forms.CharField(label='First Name:', max_length=100, required=True)

def __init__(self, *args, **kwargs):
e = kwargs.pop('num_emails', 1)
super(Email, self).__init__(*args, **kwargs)
for i in xrange(e):
self.fields['email_%i' % i] = django.forms.EmailField(label='Email:', required=False)

def iter_email(self):
for k, v in sorted(self.fields.items()):
if k.startswith('email_'):
yield v

然后,模板

<form input action="/email"method="post">
{% csrf_token %}
<div class="editor-field">{{ form.givenName.label_tag }}{{ form.givenName }}</div>
{% for m in form.iter_email %}
<div class="editor-field">{{ m.label_tag }}{{ m }}</div>
{% endfor %}
</form>

当我浏览此表单时,电子邮件字段未正确显示。 (givenName 字段工作正常。)我只是根据指定的 num_emails 以 HTML 形式打印这些字符串。 .

<django.forms.fields.EmailField object at 0x7f7d100ebcd0>

我也尝试过yield ing v.widget ,但这只是表明

<django.forms.widgets.TextInput object at 0x7f54e00f23d0>

我觉得我只需要修改一下iter_email()产生,但我无法通过检查该对象来弄清楚。

最佳答案

Form.fields 保存字段本身,您想要渲染的是可以直接从表单本身获取的 BounFields,即:

def iter_email(self):
for k in sorted(self.fields.keys()):
if k.startswith('email_'):
yield self[k]

关于python - Django "Instance"表单字段未渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com