加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – 在管理员中动态添加新表单字段

发布时间:2020-12-20 13:22:55 所属栏目:Python 来源:网络整理
导读:我正在尝试添加动态新表单字段(我使用此 blog post),用于管理界面中使用的表单: class ServiceRoleAssignmentForm(forms.ModelForm): class Meta: model = ServiceRoleAssignment def __init__(self,*args,**kwargs): super(ServiceRoleAssignmentForm,self
我正在尝试添加动态新表单字段(我使用此 blog post),用于管理界面中使用的表单:

class ServiceRoleAssignmentForm(forms.ModelForm):

    class Meta:
        model = ServiceRoleAssignment

    def __init__(self,*args,**kwargs):
        super(ServiceRoleAssignmentForm,self).__init__(*args,**kwargs)
        self.fields['test'] = forms.CharField(label='test') 


class ServiceRoleAssignmentAdmin(admin.ModelAdmin):
    form = ServiceRoleAssignmentForm

admin.site.register(ServiceRoleAssignment,ServiceRoleAssignmentAdmin)

但是,无论我尝试什么,该字段都不会显示在我的管理表单上!这可能是与管理工作方式有关的问题吗?还是ModelForm?

感谢您的帮助!

塞巴斯蒂安

PS:我正在使用django 1.3

解决方法

在模板中渲染表单时,字段从fieldsets变量枚举,而不是从字段中枚举.当然,您可以在AdminForm中重新定义字段集,但随后验证将失败,因为原始表单类没有此类字段.我可以提出的一个解决方法是静态地在表单定义中定义该字段,然后动态地在表单的init方法中重新定义该字段.这是一个例子:

class ServiceRoleAssignmentForm(forms.ModelForm):
    test = forms.Field()

    class Meta:
        model = ServiceRoleAssignment

    def __init__(self,**kwargs)
        # Here we will redefine our test field.
        self.fields['test'] = forms.CharField(label='test2')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读