所以,我有一个ModelAdmin,我需要添加额外的字段。这些字段在模型上不存在,但会通过 init 方法动态添加到自定义ModelForm中,clean中的逻辑将处理保存时返回的数据。
我似乎无法找到与向ModelAdmin表单添加自定义非模型字段相关的任何可靠信息。我最接近的是通过覆盖ModelAdmin类的get_fields并使用我想添加的新字段更新self.form.declared_fields。
这对我来说感觉不太干净,如果有更好的方法可以动态地向ModelAdmin添加新字段,我很好奇吗?
答案 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)