是否可以动态更改ModelForm
中显示的字段?
当用户从前端添加新的(模型的)实例(使用 add 表单)时,我试图仅在ModelForm
中显示少量字段但是用户编辑实例时使用编辑表单的大量字段。
Form类看起来像这样:
class SchoolForm(ModelForm):
class Meta:
model = School
#want to change the fields below dynamically depending on whether its an edit form or add form on the frontend
fields = ['name', 'area', 'capacity', 'num_of_teachers']
widgets = {
'area': CheckboxSelectMultiple
}
labels = {
'name': "Name of the School",
'num_of_teachers': "Total number of teachers",
}
尽量避免使用两个单独的类进行添加和编辑,因为这看起来并不干脆。我在管理页面上发现了一些SO帖子,我们可以覆盖get_form()
功能,但这里不适用。
此外,this回答建议使用不同的类作为常规方法,并使用动态表单作为替代。也许动态形式是这里的前进方向,但并不完全确定(我在SchoolForm类上也有被覆盖的__init__()
和save()
方法)。
答案 0 :(得分:0)
如果是正确的方法,我不是suere,但我在课堂上使用一些方法来添加字段或删除它。我这样用过:
fabricClient.QueryManager.GetApplicationTypeListAsync()
希望它有所帮助。