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') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |