I have a SurveyForm where I create dynamically my fields. Here's the most basic code I could do and still have my problem:
class SurveyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields = []
        self.fields_alone = []
        new_field = forms.CharField(label=f'1 - 2: This is the question',
                                    widget=widgets.Input(attrs={}))
        self.fields.append(('id_1', new_field))
        self.fields_alone.append(new_field)
        self.fields = OrderedDict(self.fields)
In my template, when I do a "classical" loop I can display the fields and it works, but the second loop, which is supposed to access to the same fields, doesn't work:
<form action="" method="post">
    {% for field in form %}
        {{ field.label }} :{{ field }} <br>
    {% endfor %}
    {% for field in form.fields_alone %}
        {{ field.label }} :{{ field }} <br>
    {% endfor %}
</form>
The second loop display the field as a string like <django.forms.fields.CharField object at 0x0000012C00EF60D0>
What am I missing to display is like the "classical" loop?