Django:未提交表单中的只读字段

Posted

技术标签:

【中文标题】Django:未提交表单中的只读字段【英文标题】:Django: read-only field in form not submitted 【发布时间】:2012-01-17 07:32:41 【问题描述】:

在我的表单中,我有一个只读字段。该字段的内容将由 java 脚本填充,并取决于可编辑字段的输入。为了避免用户修改字段数据,我想将其标记为只读。

当我在 forms.py 中使用

将字段标记为只读时
'key': forms.TextInput(attrs='disabled':'disabled'),

该字段的内容似乎是只读的,但不会提交。当我尝试读取 form.cleaned_data['key'] 时出现以下错误:

Exception Type:     MultiValueDictKeyError
Exception Value:    "Key 'key' not found in <QueryDict: ...>

有没有比“禁用”更好的方法在 Django 表单中将该字段标记为“只读”?

感谢您的建议!

【问题讨论】:

看来'key': forms.TextInput(attrs='readonly':'True'),会解决的。抱歉,应该在文档中进一步阅读。 【参考方案1】:

禁用的字段永远不会在表单数据中提交。但您可以在几乎所有浏览器中使用 readonly="readonly" 属性,supported。

参考这篇文章http://www.cs.tut.fi/~jkorpela/forms/readonly.html也会很有帮助。

快乐编码。

【讨论】:

readonly 的问题在于它不适用于某些输入类型,例如复选框或选择。

以上是关于Django:未提交表单中的只读字段的主要内容,如果未能解决你的问题,请参考以下文章

当屏蔽字段具有“只读”属性时,jQuery Inputmask 插件会阻止表单提交

如何使用 jQuery 提交带有部分只读输入的表单?

Orbeon 表单:单击“提交”后禁用表单字段

Django 表单未从模板提交

Django表单未提交

Django 表单:提交表单时出现隐藏字段错误