Как вы можете вручную отобразить поле формы с его начальным набором значений?
-
30-09-2019 - |
Вопрос
Я пытаюсь отображать поля формы вручную, чтобы мои коллеги -дизайнеры могли манипулировать входными элементами в HTML, а не борется с источником Python.
т.е. Вместо того, чтобы объявлять подобные поля формы ...
{{ form.first_name }}
.. я действительно делаю ...
<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 %}
Проблема в том, что, похоже, нет способа получить начальное значение поля во втором методе. {{form.first_name}} оператор делает элемент ввода с правильным начальным значением, но каким -то образом нет ничего похожего на {{form.first_name.initial_value}} Поле, когда вы хотите отображать форму вручную.
Решение
В этой проблеме есть интересный давний билет. Существует пример кода для реализации фильтра шаблона в комментариях, который должен делать то, что вам нужно:
Другие советы
<input value="{{form.name.data|default_if_none:'my_defaut_value'}}" ... />
Вам придется использовать default_if_none
Поскольку неявное значение связанного поля не будет храниться в data.
Подробнее здесь