Как заставить RadioSelect выполнять итерацию по каждому выбору для определенного поля, когда я записываю их вручную? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть модель, в которой я собираю контактную информацию для потенциальных клиентов. Один из них относится к месяцу, и я пытаюсь заставить их отображаться в виде переключателя. Я использовал опцию RadioSelect только для того, чтобы узнать, что к ней не подключена кнопка Radio.

Я нашел, как вручную вводить каждое поле формы на страницу, используя документацию Django. Я сделал это, и это сработало, но теперь отображается все 12 месяцев, 12 раз. Я не знаю, как заставить это показать все 12 месяцев только один раз.

forms.py

from django.forms import ModelForm
from django import forms
from .models import CustomerData, Ebook

MONTH_CHOICES = [
    ('January', 'January'),
    ('February', 'February'),
    ('March','March'),
    ('April', 'April'),
    ('May', 'May'),
    ('June','June'),
    ('July', 'July'),
    ('August', 'August'),
    ('September','September'),
    ('October','October'),
    ('November','November'),
    ('December','December')
]


class ContactForm(ModelForm):
    month = forms.ChoiceField(label='', choices=MONTH_CHOICES, widget=forms.RadioSelect(), error_messages={'required' : 'Month is Required'})
    phone = forms.CharField(required=False)
    firstname = forms.CharField(label='', error_messages={'required': 'First Name Required'})
    lastname = forms.CharField(label='', error_messages={'required': 'Last Name Required'})
    npo = forms.CharField(label='', error_messages={'required': 'Organization Required'})
    email = forms.CharField(label='', error_messages={'required': 'Email Required'})
    class Meta:
        model = CustomerData
        fields = ['firstname', 'lastname', 'npo', 'email', 'phone', 'month']

index.html

<div class="fieldWrapper">
        {{ form.month.errors }}
<label for="{{ form.subject.id_for_label }}">Month:</label>
    {% for month in form.month %}
        <label>
         <input name="group1" type="radio" />
         <span> {{ form.month }} </span>
        </label>
    {% endfor %}
</div>

Мне нужно, чтобы это повторялось по месяцам и отображало каждый из них только один раз

Это изображение того, что я вижу

12 months 12 times

1 Ответ

0 голосов
/ 21 мая 2019

Игнорирование. Я понял. Вот решение для любого, кто может наткнуться на это.

    <!-- Month -->
<div class="fieldWrapper">
        {{ form.month.errors }}
<label for="{{ form.subject.id_for_label }}">Month:</label>
<br>
    {% for month, monthb in form.fields.month.choices %}
        <label>
         <input name="group1" type="radio" />
         <span> {{month}} </span>
        </label>
    {% endfor %}
</div>

Мне нужно было две ссылки и вызвать только одну из них в разделе span. Мне также нужно было добавить варианты для инициализации цикла for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...