Я пытаюсь создать динамическую форму, которая позволит использовать несколько входов и при необходимости увеличивать размер формы.Django «Необязательные» поля формы не отображаются
Вот упрощенная версия моей формы.
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 работает правильно.) Я просто получаю эти строки, напечатанные в HTML, на основе указанного num_emails
.
<django.forms.fields.EmailField object at 0x7f7d100ebcd0>
Я также попытался yield
ING v.widget
, но это только показывает
<django.forms.widgets.TextInput object at 0x7f54e00f23d0>
Я чувствую, что мне просто нужно изменить какие iter_email()
урожаи, но я не мог понять путем изучения этого объекта.
Отлично. Большое спасибо. – fandingo