我正在學習django表單,並想知道如何使模型表單生成顯示只。Django ModelForm-如何使表單生成不可編輯
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
forms.py
class PersonForm(ModelForm):
class Meta:
model = Person
要生成與數據庫中的一些現有數據格式:
person=Person.objects.get(id=someid)
person_form = PersonForm(instance = person)
所有領域在形式中在頁面中可編輯。但是,我只想顯示數據。
經過一番在StackOverflow搜索後,我發現了一個類似的解決方案how to show a django ModelForm field as uneditable,它教導瞭如何設置個別字段不可知。
但我想使整個表格不可編輯。有沒有更好的方法來做到這一點,而不是將所有的字段一一設置爲不可編輯?
非常感謝您的幫助。
更新:我發現流動的代碼有助於使窗體不可編輯,但仍不確定這是否是正確的方式。
for field in person_form.fields:
person_form.fields[field].widget.attrs['readonly'] = True
謝謝你的建議。
這將是做到這一點的方式,因爲Django沒有內置的小部件。 –
你的意思是我的更新中的方法? – Mona
@limelights是的,它與我的模型中的大多數字段都可以正常工作,但在我的模型中有CountryField,似乎將'readonly'設置爲True對CountryField不起作用,它仍然可以在頁面中進行編輯。有什麼建議嗎? – Mona