Django-admin中的动态表单
我想让管理员的添加表单变得动态。也就是说,我想根据相关对象中的设置来添加一些表单字段。
我有这样的代码:
class ClassifiedsAdminForm(forms.ModelForm):
def __init__(self,*args, **kwargs):
super(ClassifiedsAdminForm, self).__init__(*args, **kwargs)
self.fields['testujemy'] = forms.CharField(label = "test")
在admin.py文件中:
class ClassifiedAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
return ClassifiedsAdminForm
如你所见,我想在管理员的添加表单和修改表单中添加一个叫“testujemy”的字符字段。但是,这种方法不起作用。有没有办法在init中添加这个字段?在普通视图中是可以的。
1 个回答
8
我已经成功地用type()这个方法实现了。
class ClassifiedAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
adminform = ClassifiedsAdminForm()
fields = adminform.getNewFields()
form = type('ClassifiedsAdminForm', (forms.ModelForm,), fields)
return form
希望这能对某些人有所帮助。