因此,我有一个需要添加额外字段的ModelAdmin。模型上不存在这些字段,但是将通过ModelForm init方法动态地将这些字段添加到自定义中,并且clean中的逻辑将在保存时处理返回的数据。
我似乎找不到任何关于向ModelAdmin表单中添加自定义非模型字段的可靠信息。我最接近的方法是重写ModelAdmin类上的ModelAdmin,并使用我想添加的新字段更新self.form.declared_fields。
这对我来说不是很干净,我很好奇是否有更好的方法来动态地向ModelAdmin添加新的字段?
发布于 2021-06-23 05:11:56
您还可以使用这种方式添加不在models.py中的字段。
in 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)
https://stackoverflow.com/questions/50097034
复制