最初の値が設定されたフォームフィールドを手動でレンダリングするにはどうすればよいですか?
-
30-09-2019 - |
質問
私は、フォームのフィールドを手動でレンダリングしようとしているので、デザイナーの同僚がPythonソースで苦労するのではなく、HTML内の入力要素を操作できるようにしています。
すなわち。このようなフォームフィールドを宣言する代わりに...
{{ 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 %}
問題は、2番目の方法でフィールドの初期値を取得する方法がないように見えることです。 {{form.first_name}} ステートメントは、適切な初期値で入力要素をレンダリングしますが、どういうわけかは何もありません {{form.first_name.initial_value}} フィールドフォームを手動でレンダリングしたい場合。
解決
この問題について興味深い長年のチケットがあります。コメントにテンプレートフィルターを実装するサンプルコードがあります。
他のヒント
<input value="{{form.name.data|default_if_none:'my_defaut_value'}}" ... />
使用する必要があります default_if_none
バインドされたフィールドの暗黙の値がで保存されないため data.
詳細については、こちらをご覧ください
所属していません StackOverflow