首页 > 解决方案 > 向 ModelAdmin 表单添加额外的字段

问题描述

所以,我有一个 ModelAdmin,我需要添加额外的字段。这些字段在模型上是不存在的,但是会通过init方法动态添加到自定义的ModelForm中,clean里面的逻辑会在save时处理返回的数据。

我似乎找不到任何与将自定义非模型字段添加到 ModelAdmin 表单相关的可靠信息。我最接近的是通过覆盖 ModelAdmin 类上的 get_fields 并使用我想添加的新字段更新 self.form.declared_fields 。

这对我来说不是很干净,我很好奇是否有更好的方法可以动态地将新字段添加到 ModelAdmin?

标签: pythondjango

解决方案


您也可以使用这种方式添加不在 models.py 中的字段

在 admin.py:::

from django.utils.translation import gettext as _

class TrialAdmin(admin.ModelAdmin):
    fields = (..., 'non_model_field',...,)

    def non_model_field(self, instance):
    # this method name should be same as new field name defied above in fields.
        # [what u need to do here]

    non_model_field.short_description = _("non_model_field")
    #This value 'short_description' defines what the field name is shown as in admin similar to 'verbose_name' in models.

admin.site.register(..., TrialAdmin)


推荐阅读