Django表单中的只读字段

Foo*_*bar 16 python forms django readonly django-forms

如何在Django表单中将字段设置为只读?我知道如何禁用一个字段,但这不是我正在寻找的.任何帮助,将不胜感激.

nae*_*ael 25

attrs定义时可以使用可选参数Field.以机智:

somefield = forms.CharField(
    widget=forms.TextInput(attrs={'readonly':'readonly'})
)
Run Code Online (Sandbox Code Playgroud)


mtt*_*t2p 12

在可用的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
Run Code Online (Sandbox Code Playgroud)

  • Django 文档在这里显然是错误的;在使用禁用属性的情况下,不会忽略该值以支持表单的初始数据;该值根本没有传递。 (3认同)

sur*_*190 10

Django 1.9+:

somefield = forms.CharField(disabled=True)
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的重要一点是,字段在"禁用"时不会提交给服务器.如果您希望发布字段数据,请将其设置为"readonly" (7认同)