Django表单中的只读字段

时间:2016-12-21 21:11:45

标签: python django forms django-forms readonly

如何在Django表单中将字段设置为只读?我知道如何禁用字段,但这不是我想要的。任何帮助,将不胜感激。

4 个答案:

答案 0 :(得分:19)

定义attrs时,您可以使用可选的Field参数。即:

somefield = forms.CharField(
    widget=forms.TextInput(attrs={'readonly':'readonly'})
)

答案 1 :(得分:9)

Django 1.9+

somefield = forms.CharField(disabled=True)

答案 2 :(得分:8)

在Field.disabled属性中的 django 1.9 https://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled

禁用的boolean参数设置为True时,使用禁用的HTML属性禁用表单字段,以便用户无法编辑它。即使用户篡改了提交给服务器的字段值,也会忽略该格式以支持表单初始数据中的值。

,否则

使用小部件'readonly'属性

class PatientForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
       super(PatientForm, self).__init__(*args, **kwargs)
       self.fields['field'].widget.attrs['readonly'] = True

    class Meta:
        model = Patient

答案 3 :(得分:0)

这是我让它在 Js 中工作的唯一方法:

function myFieldOnChange() {
    var myField= document.getElementById("myFieldID")
    myField.setAttribute('readonly', true)