django admin 不显示抽象基类字段

Posted

技术标签:

【中文标题】django admin 不显示抽象基类字段【英文标题】:django admin not showing abstract base class fields 【发布时间】:2016-09-11 14:54:06 【问题描述】:

我有

class BaseModelMixin(models.Model):
    class Meta:
        abstract = True
    uuid = models.UUIDField(default=uuid4, editable=False, db_index=True)
    created_on = models.DateTimeField(default=now, editable=False, blank=True)
    updated_on = models.DateTimeField(default=now, editable=False, blank=True)

class Something(BaseModelMixin):
    whatever = models.TextField(blank=True, null=True)

class SomethingElse(BaseModelMixin):
    whoever = models.TextField(blank=True, null=True)

在管理站点上,对于每个Something,我可以看到任何内容,但看不到uuid、created_on 或updated_on。我一定遗漏了一些明显的东西......如果 django 管理员没有自动向我显示这些字段,那将是令人惊讶的。

我绝对想要摘要;我不想要一个额外的表,我希望 uuid、created_on、updated_on 字段位于具体的类表中,它们确实存在。它们只是没有出现在 django 管理站点中。

我做错了什么?


Anoop 的回答部分正确:

class BaseModelMixinAdmin(admin.ModelAdmin):
    readonly_fields=('uuid','created_on','updated_on')

还有:

admin.site.register(Something, BaseModelMixinAdmin)
admin.site.register(SomethingElse, BaseModelMixinAdmin)

...这有点烦人,我必须这样做,但是哦,还不错...

【问题讨论】:

editable=False 字段默认不显示。考虑一下***.com/q/3967644/1925257 【参考方案1】:

如果您只想在管理面板中查看不可编辑的字段。在模型管理中使用read only fields

class BaseModelMixinAdmin(admin.ModelAdmin):
    readonly_fields=('uuid',)

【讨论】:

以上是关于django admin 不显示抽象基类字段的主要内容,如果未能解决你的问题,请参考以下文章

Django - 后台admin不显示带auto_now, auto_now_add选项的字段

Django Admin:改变数据的显示方式

Django后台Admin继承UserAdmin增加用户不显示明文方法

Django admin list_display 不显示模型方法返回项

Django Admin ForeignKey字段小部件选项和不一致的默认值

只读模型并在django admin中显示为列表?