手动输入字段 - 值和最大长度

时间:2014-08-24 11:38:01

标签: python django input django-forms

为了更好地控制我的输入字段,我尝试"复制"在模板中生成输入字段的函数

我使用的是ModelForm,我想改变

...
{{ form.name }}
...

类似

...
<input id="{{ form.name.auto_id }}" type="text" name="{{ form.name.name }}" maxlength="{{ form.name.**get_max_length** }}" value="{{ form.name.**get_value_or_initial_value** }}"/>
...

除了 maxlength value 之外,其中大部分都已有效。

的maxlength
我读了

但我仍然没有做对......


这个问题(How can you manually render a form field with its initial value set?)的答案指向已经修复的票证。仍然会name.value打印&#34;无&#34;如果没有价值。我是想手动捕捉value="None"还是同时有更好的解决方案?

[编辑]
价值似乎就像那样

{{ form.name.value|default_if_none:"" }}

(来自Display value of a django form field in a template?

1 个答案:

答案 0 :(得分:2)

您可以从窗口小部件中获取max_length属性。对于初始值,您只需要访问value属性,已经有一个初始值或提交值。传递给表单类的所有初始值都保存在form.initial中,但您可能不需要检查这些值:。

<input id="{{ form.name.auto_id }}" type="text" name="{{ form.name.name }}" maxlength="{{ form.name.field.widget.attrs.max_length }}" value="{% if form.name.value %}{{ form.name.value }}{% endif %}"/>