【问题标题】:Show object ID (primary key) in Django admin object page在 Django 管理对象页面中显示对象 ID(主键)
【发布时间】:2018-04-18 17:12:54
【问题描述】:

假设我有以下model.py

class Book(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100, unique=True)

我在admin.py 中注册了这个模型:

admin.site.register(Book)

在管理员中查看现有的Book 时,只有name 字段可见。

我的问题是:ID 是否也可以在此页面中显示?

我找到的大多数答案都与管理列表有关,而不是与对象实例页面有关。显示 ID 字段的一种方法是通过从模型定义中删除 editable=False 使其可编辑。但是,我想将其保持为只读状态。

【问题讨论】:

标签: python django django-models django-admin


【解决方案1】:

您可以将其添加到模型管理类中的readonly_fields

class BookAdmin(admin.ModelAdmin):
    readonly_fields = ('id',)

admin.site.register(Book, BookAdmin)

【讨论】:

  • IMO 的理想快速解决方案,与添加它相比,并且可以选择更改值
【解决方案2】:

编辑

我删除了我的答案,因为它与@DanielRoseman 相同,但这只是为了澄清。这是来自documentation

如果为 False,该字段将不会显示在 admin 或任何其他 模型形式。在模型验证期间它们也会被跳过。默认为 没错。

因此,使用readonly_fields 是可行的方法。

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 2010-12-08
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2017-04-25
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多