动态更改ModelForm的字段

时间:2017-05-22 13:20:00

标签: django django-models django-forms

是否可以动态更改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()方法)。

1 个答案:

答案 0 :(得分:0)

如果是正确的方法,我不是suere,但我在课堂上使用一些方法来添加字段或删除它。我这样用过:

fabricClient.QueryManager.GetApplicationTypeListAsync()

希望它有所帮助。