django内联管理员:从模型表单中动态删除非模型字段

时间:2015-10-28 21:15:34

标签: django django-forms django-admin

当我在管理员中内嵌显示用户个人资料时,我想根据特定条件删除一些非模型字段。

class ProfileInline(admin.StackedInline):
    model = Profile
    form = ProfileForm
    max_num = 1
    can_delete = False

ProfileForm有一些额外的字段,这些字段与模型无关,我想在某些条件下删除它们,例如某个用户正在编辑表单。

我尝试显式设置要包含的字段,我还尝试在get_formset()的帮助下排除字段:

    def get_formset(self, request, obj=None, **kwargs):
        kwargs['fields'] = ['fieldX', 'fieldY']
        #kwargs['exclude'] = ['fieldZ']
        return super(ProfileInline, self).get_formset(request, obj, **kwargs)

它适用于模型字段,但始终显示非模型字段。

1 个答案:

答案 0 :(得分:0)

这是一个古老的话题,但我想我可以提供帮助。

您可以使用ModelAdmin类的 fieldsets 属性隐藏字段。

只列出您要显示的字段。