やりたいこと
・Formの無効化
・サーバーに送信された場合でも受け取った値を無視する
ModelFormの場合
from django import forms
from .models import Sample
class SampleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.fields['hoge'].disabled = True
super().__init__(*args, **kwargs)
class Meta:
model = Sample
Formの場合
from django import forms
class SampleForm(forms.Form):
hoge = forms.CharField(disabled=True)
もしくは
from django import forms
class SampleForm(forms.Form):
hoge = forms.CharField(label='hoge')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['hoge'].disable = True
参考資料
公式サイトの内容を日本語訳しました。
disabledブール引数をTrueに設定すると、HTMLのdisable属性を使用してフォームフィールドが無効になり、ユーザーが編集できなくなります。
ユーザーがサーバーに送信されたフィールドの値を改ざんしたとしても、無視してフォームの初期データの値を優先します。