Django Crispy Form цикл через объект {% crispy %}

Я пытаюсь использовать поля формы crispy внутри каждого столбца таблицы. Я могу отобразить их, используя:

{% load crispy_forms_tags %}
<tr>
    <form method="get" class="form-inline justify-content-center">
        {% for field in filter.form %}
            <th>{{ field|as_crispy_field }}</th>
        {% endfor %}
        <input class='hidden-submit' type="submit"/>
    </form>
</tr>

И это выглядит следующим образом, что мне и нужно:

enter image description here

Но проблема в том, что Layout(), который я использую для добавления дополнительных параметров, таких как заполнители и т.д. в форму, не работает, потому что я использую тег |as_crispy_field для отображения отдельных полей. Вот мой компонент формы:

class CustomFiltersForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_show_labels = False
        self.helper.form_tag = False
        self.helper.layout = Layout(

        )

        for field_name, field in self.fields.items():
            self.helper.layout.append(Field(field_name, placeholder="Search " + field.label))

Есть ли способ зацикливания {% crispy filter.form %} или альтернативный способ заполнения отдельных полей с помощью форм cripsy? Что-то вроде:

{% for field in {% crispy filter.form%} %}
...
{% endfor %}

Вы пытаетесь сделать две разные вещи, либо вы отображаете поля вручную, либо вы отображаете их через опцию компоновки в помощнике crispy form. Я бы отказался от подхода с отдельными полями и просто использовал опцию компоновки, так как тогда заполнители и множественные атрибуты, которые вы добавляете, будут видны.

Формы должны выглядеть примерно так.

class CustomFiltersForm(forms.Form):

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.helper = FormHelper()
    self.helper.form_show_labels = False
    self.helper.form_tag = False

    for field_name, field in self.fields.items():
        self.helper.layout.append(Column(Field(field_name, placeholder="Search " + field.label)))
        self.helper.layout.append(Hidden(Submit("submit"))

Шаблон должен выглядеть примерно так:

{% load crispy_forms_tags %}
<tr>
    <form method="get" class="form-inline justify-content-center">
        {% crispy filter_form %}
    </form>
</tr>
Вернуться на верх