私はdjangoフォームを学んでおり、モデルフォームを生成して表示のみにする方法を知りたいです。
models.py
class Person(models.Model):
first_name = models.CharField(max_length=40, null=True)
last_name = models.CharField(max_length=40, null=True)
#more fields
フォーム.py
class PersonForm(ModelForm):
class Meta:
model = Person
データベース内の既存のデータを使用してフォームを生成するには:
person=Person.objects.get(id=someid)
person_form = PersonForm(instance = person)
フォームのすべてのフィールドは、ページで編集可能です。ただし、データを表示したいだけです。
StackOverflow でいくつか検索した後、django ModelForm フィールドを uneditable として表示する方法と同様の解決策を見つけました。これは、個々のフィールドを uneidtableに設定する方法を教えています。
しかし、フォーム全体を編集不可にしたいのです。すべてのフィールドを 1 つずつ編集不可に設定する代わりに、これを行うより良い方法はありますか?
ご助力ありがとうございます。
更新:フロー コードがフォームを編集不可にするのに役立つことがわかりましたが、これが正しい方法であるかどうかはまだわかりません。
for field in person_form.fields:
person_form.fields[field].widget.attrs['readonly'] = True
アドバイスをいただきありがとうございます。