Django .forms.fields.booleanfield Объект при переборе списка полей - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу перебрать список флажков. Когда я использую один флажок, он работает, но когда я перебираю флажки, я получаю

<DJANGO.FORMS.FIELDS.BOOLEANFIELD OBJECT AT 0X7FA2DA62B470> <DJANGO.FORMS.FIELDS.BOOLEANFIELD OBJECT AT 0X7FA2DA5A5940> 

Это не должно быть проблемой списка или кортежа, как в этот или подобный вопросы я нашел.

my forms.py:

class TestForm(forms.Form):

    toggles = [forms.BooleanField(label="A Checkbox", required=False), 
               forms.BooleanField(label="A second Checkbox", required=False)]

    single_toggle = forms.BooleanField(label="A single Checkbox", required=False)

мой шаблон:

        {% for toggle in form.toggles %}
            {{ toggle }}
        {% endfor %}

        {{ form.single_toggle }}

Ожидаемый результат: три флажка

Фактический вывод: <DJANGO.FORMS.FIELDS.BOOLEANFIELD OBJECT AT 0X7FA2DA62B470> <DJANGO.FORMS.FIELDS.BOOLEANFIELD OBJECT AT 0X7FA2DA5A5940> и один флажок.

1 Ответ

0 голосов
/ 18 апреля 2020

Хорошо, я понял это после дополнительных исследований, как описано здесь :

Новый код в forms.py

class PhoneAdaptForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for i in range(3):
            self.fields['new_toggle_' + str(i)] = forms.CharField(
                widget=forms.CheckboxInput, label="Try NO. " + str(i), required=False)

    def get_init_fields(self):
        for field_name in self.fields:
            if field_name.startswith('new_toggle_'):
                yield self[field_name]

И тогда шаблон :

        {% for new_field in form.get_init_fields %}
            {{ new_field }}
        {% endfor %}

Это дает мне три флажка.

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