Поля формы Django не отображаются при группировке полей

Я использую Django 4.0.3 с веб-интерфейсом на bootstrap. По причинам компоновки я хочу, чтобы мои поля в ModelForm были сгруппированы, и я делаю это с помощью:

class UserForm(ModelForm):
    template_name = "container/form.html"

    field_groups = [["email", "company"], ["last_name", "first_name"]]
    grouped_fields = []

    class Meta:
        model = MyUser
        fields = ["email", "company", "first_name", "last_name"]

    __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)

    def group_fields(self):
        for group in self._field_groups:
        group_entry = []
        for entry in group:
            group_entry.append(self.fields[entry])

        self.grouped_fields.append(group_entry)

В представлении я инициализирую свою форму и перегруппировываю поля:

def user_form(request):
    form = UserForm()
    form.group_fields()
    render(request, "page.html, {"form", form})

page.html выглядит следующим образом:

<body>
    <div id="form-wrapper">
        {{ form }}
    </div>
</body>

а form.html выглядит следующим образом:

<form action="" method="POST">{% csrf_token %}
{% for field_group in form.grouped_fields %}
    <div class="row">
    {% for field in field_group %}
        <div class="col">
            <label>{{ field.label }}</label> {{ field }}
        </div>
    {% endfor %}
    </div>
{% endfor %}

Однако отображаемые поля отображаются как строковые представления объектов поля:

Email <django.forms.fields.EmailField object at 0x7f98c00e03a0>
Company <django.forms.fields.CharField object at 0x7f98c00e0250>
Last name <django.forms.fields.CharField object at 0x7f98c00e0790>
First name <django.forms.fields.CharField object at 0x7f98c00e10c0>

В то время как обычный вызов отображает, как ожидается, форму с полями ввода, но не с желаемым макетом.

{% for field in form %}
    <div class="row">
        <div class="col">
            {{ field.label_tag }} {{ field }}
        </div>
    </div>
{% endfor %}

Я также пытался перенести вызов метода group_fields в форму init, но безуспешно. Есть ли способ правильно отобразить поля, которые хранятся в моем контейнере grouped_fields?

После долгого перебора я написал обертку для ModelForm, определил в ней свой field_groups и отобразил его в шаблоне. Это не очень красиво, но помогает.

<form action="" method="post">
   {% for fieldgroup in form.field_groups %}
        <div class="row fieldgroup">
        {% for fieldname in fieldgroup %}
            {% for field in form %}
                {% if field.name == fieldname %}
                <div class="col pt-2">
                    <label class="form-label">{{ field.label }}</label>
                    {{ field }}
                </div>
                {% endif %}
            {% endfor %}
        {% endfor %}
        </div>
    {% endfor %}
    <button type="submit">Submit</button>
</form>
Вернуться на верх