3
我有一個Django模型:在運行時設置Django ModelForm可見字段?
class Customer(models.Model):
first_name=models.CharField(max_length=20,null=True, blank=True)
last_name=models.CharField(max_length=25,null=True, blank=True)
address=models.CharField(max_length=60,null=True, blank=True)
address2=models.CharField(max_length=60,null=True, blank=True)
city=models.CharField(max_length=40,null=True, blank=True)
state=models.CharField(max_length=2,null=True, blank=True)
從那裏,我創建了一個的ModelForm:
class CustomerForm(forms.ModelForm):
class Meta:
model=Customer
我希望能夠表現出我的模板對應於特定信息的形式件用戶可以改變。例如,如果我想讓客戶更改他們的名字,我希望能夠顯示僅包含字段'first_name'和'last_name'的表單。要做到這一點是創建爲每個不同的場片段的的ModelForm
的一種方式......作爲名稱例如,它看起來是這樣的:
class CustomerFormName(forms.ModelForm):
class Meta:
model=Customer
fields=('first_name','last_name')
這似乎相當不雅,僵化。我想要做的是能夠在運行時指定字段,所以當我將字典從視圖傳遞到模板時,我可以設置要顯示的字段。我如何設置它,以便在運行時設置表單的字段?我最想要的傳遞到像這樣的最終解釋:
{'name_change_form':CustomerFormName(<form with only first_name and last_name>), 'address_change_form':CustomerFormName(<form with only address fields>)}
然後,我知道,每當我輸出name_change_form.as_p,這將有正是我要找的表單字段。
想法?也隨時推薦一個更好的方式來做到這一點。