将额外字段添加到ModelAdmin表单

时间:2018-04-30 08:51:57

标签: python django

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

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

这对我来说感觉不太干净,如果有更好的方法可以动态地向ModelAdmin添加新字段,我很好奇吗?

1 个答案:

答案 0 :(得分:0)

你也可以用这种方式添加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)