¿Cómo se puede hacer manualmente un campo de formulario con su conjunto valor inicial?
-
30-09-2019 - |
Pregunta
Estoy tratando de hacer que los campos de un formulario de forma manual para que mis colegas diseñadores podían manipular los elementos de entrada dentro del HTML en lugar de luchar en la fuente de Python.
ie. En lugar de declarar campos de formulario como este ...
{{ form.first_name }}
.. que realmente hacen ...
<label for="id_first_name">Your name:</label>
<input type="text" value="{{ form.first_name.somehow_get_initial_value_here }}" name="first_name" id="id_first_name" class="blabla" maxlength="30" >
{% if form.first_name.errors %}<span>*** {{ form.first_name.errors|join:", " }}</span>{% endif %}
El problema es que no parece haber ninguna manera de obtener el valor inicial del campo en el segundo método. {{form.first_name}} declaración no hacer que el elemento de entrada con el valor inicial adecuado pero de alguna manera no hay nada como {{}} form.first_name.initial_value cuando desee reproducir el formulario manualmente.
Solución
Hay un billete de larga data interesante sobre este mismo asunto. No hay código de ejemplo para implementar un filtro de plantilla en los comentarios que se debe hacer lo que tiene:
Otros consejos
<input value="{{form.name.data|default_if_none:'my_defaut_value'}}" ... />
Usted tendrá que utilizar default_if_none
porque el valor implícito de un campo enlazado no se almacenará en data.
Más detalles aquí