向 ModelAdmin 表单添加额外字段
Posted
技术标签:
【中文标题】向 ModelAdmin 表单添加额外字段【英文标题】:Add extra fields to a ModelAdmin form 【发布时间】:2018-10-10 08:14:41 【问题描述】:所以,我有一个 ModelAdmin,我需要添加额外的字段。这些字段在模型上是不存在的,但是会通过init方法动态添加到自定义的ModelForm中,clean里面的逻辑会在save时处理返回的数据。
我似乎找不到任何与将自定义非模型字段添加到 ModelAdmin 表单相关的可靠信息。我最接近的是通过覆盖 ModelAdmin 类上的 get_fields 并使用我想添加的新字段更新 self.form.declared_fields 。
这对我来说不是很干净,我很好奇是否有更好的方法可以动态地将新字段添加到 ModelAdmin?
【问题讨论】:
***.com/questions/8007095/… 这或多或少是我目前用来显示字段的东西,但它似乎并不太干净。我认为有一种更清洁更简单的方法。 django admin - add custom form fields that are not part of the model的可能重复 字段需要动态定义,不能静态属于表单。自定义字段是从其他地方的列表中加载的。 【参考方案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)
【讨论】:
以上是关于向 ModelAdmin 表单添加额外字段的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security在标准登录表单中添加一个额外的字段