es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle de formularios Django Crispy a través del objeto {% crispy %}.

Estoy intentando utilizar campos de formulario precisos dentro de cada columna de una tabla. Puedo renderizarlo usando:

{% 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>

Y se ve como quiero:

Pero el problema es mi Layout() que estoy usando para agregar parámetros adicionales, tales como marcadores de posición, no está funcionando porque estoy usando la etiqueta |as_crispy_field para renderizar campos individuales. Aquí está mi componente de formulario:

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="Buscar " + field.label))

¿Hay alguna forma de recorrer {% crispy filter.form%} o una forma alternativa de poblar campos individuales utilizando formularios sustanciosos? Algo como:

{% for field in {% crispy filter.form%} %}
...
{% endfor %}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes hacer un bucle a través de {% crispy filter.form %} para llenar campos individuales usando formularios crujientes. Por ejemplo:

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

    También puedes usar el Layout() para agregar parámetros extras como marcadores de posición al formulario. Por ejemplo:

    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="Buscar " + field.label))
                self.helper.layout.append(Field(field_name, as_crispy_field=True))
    

    Esto te permitirá representar campos individuales usando la etiqueta |as_crispy_field mientras agregas parámetros extra como marcadores de posición al formulario.

Comments are closed.