【问题标题】:manual input field - value and maxlength手动输入字段 - 值和最大长度
【发布时间】:2014-10-17 17:47:23
【问题描述】:

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

我使用 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** }}"/>
...

除了 maxlengthvalue 之外,大部分已经可以使用了。

最大长度
我读了

但我还是没搞清楚……

价值
这个问题的答案 (How can you manually render a form field with its initial value set?) 指向一张已经修复的票。如果不存在任何值,name.value 仍然会打印“None”。我是要手动捕获value="None",还是同时有更好的解决方案?

[编辑]
value 似乎是这样工作的

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

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

【问题讨论】:

    标签: python django input django-forms


    【解决方案1】:

    您可以从小部件中获取 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 %}"/>
    

    【讨论】:

    • 谢谢! value 似乎有效(我还找到了一条捷径 - 请参阅我的问题中的编辑),但是,我无法让 max_length 像这样工作。你试过了吗?
    • 对不起,我忘记了字段属性,现在已经修复了。 BoundField 无法直接访问小部件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2012-06-02
    相关资源
    最近更新 更多