Djangoフォームでフィールドを読み取り専用に設定するにはどうすればよいですか?フィールドを無効にする方法は知っていますが、それは私が探しているものではありません。
attrs
を定義するときに、オプションのField
パラメーターを使用できます。機知に:
somefield = forms.CharField(
widget=forms.TextInput(attrs={'readonly':'readonly'})
)
Django 1.9+
:
somefield = forms.CharField(disabled=True)
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