【问题标题】:Fields Don't show in django admin字段不在 django admin 中显示
【发布时间】:2021-05-29 18:07:21
【问题描述】:

字段不在 django admin 中显示 尝试通过 django admin 添加角色时,它不显示该字段

class Role(Core):
    role = models.CharField(max_length=25, unique=True, editable=False)

    def save(self, *args, **kwargs):
        self.role = self.role.lower()
        super(Role, self).save(*args, **kwargs)

    def __str__(self):
        return self.role.capitalize()

admin.site.register(Role)

class Core(models.Model):
    id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

enter image description here

【问题讨论】:

  • 你应该定义Core 之前 Role
  • 此外,id 由数据库提供(它是主键),created_atupdated_at 是不可编辑的项目,因此这些不会显示在表单中要么。
  • 你所有的字段都有editable=False,所以如上所述没有一个会出现......

标签: django django-models django-admin


【解决方案1】:

id 由数据库给出(它是主键),created_atupdated_at 是不可编辑的项目,因此它们也不会显示在表单中。

这意味着role 将是唯一可以使用的字段,但您将其指定为editable=False [Django-doc],因此它不会显示创建/编辑Role对象。

您应该删除 editable=False 部分:

class Role(Core):
    #                             no editable = False ↓
    role = models.CharField(max_length=25, unique=True)

    def save(self, *args, **kwargs):
        self.role = self.role.lower()
        super(Role, self).save(*args, **kwargs)

    def __str__(self):
        return self.role.capitalize()

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2021-04-28
    • 2021-09-18
    • 1970-01-01
    • 2013-08-28
    • 2016-09-11
    • 2013-05-15
    • 2023-01-03
    • 2021-10-18
    相关资源
    最近更新 更多