Django-admin中的动态表单

8 投票
1 回答
3106 浏览
提问于 2025-04-16 07:40

我想让管理员的添加表单变得动态。也就是说,我想根据相关对象中的设置来添加一些表单字段。

我有这样的代码:

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

希望这能对某些人有所帮助。

撰写回答