【问题标题】:Add extra fields to a ModelAdmin form向 ModelAdmin 表单添加额外字段
【发布时间】:2018-10-10 08:14:41
【问题描述】:

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

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

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

【问题讨论】:

标签: python django


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2015-08-26
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多