web-dev-qa-db-ja.com

Djangoフォームの読み取り専用フィールド

Djangoフォームでフィールドを読み取り専用に設定するにはどうすればよいですか?フィールドを無効にする方法は知っていますが、それは私が探しているものではありません。

15
Foobar

attrsを定義するときに、オプションのFieldパラメーターを使用できます。機知に:

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

Django 1.9+

somefield = forms.CharField(disabled=True)
10
surfer190

Django 1.9で使用可能なField.disabled属性で: https://docs.djangoproject.com/en/1.9/ref/forms/fields /#disabled

disabledブール値引数をTrueに設定すると、disabled HTML属性を使用してフォームフィールドが無効になり、ユーザーが編集できなくなります。ユーザーがサーバーに送信されたフィールドの値を改ざんしても、フォームの初期データからの値が優先されるため、無視されます。

それ以外の場合

ウィジェットの「読み取り専用」属性を使用します

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
10
mtt2p