在 Django 管理对象页面中显示对象 ID(主键)
Posted
技术标签:
【中文标题】在 Django 管理对象页面中显示对象 ID(主键)【英文标题】:Show object ID (primary key) in Django admin object page 【发布时间】: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
使其可编辑。但是,我想将其保持为只读状态。
【问题讨论】:
Django admin: How to display a field that is marked as editable=False' in the model?的可能重复 【参考方案1】:您可以将其添加到模型管理类中的readonly_fields
。
class BookAdmin(admin.ModelAdmin):
readonly_fields = ('id',)
admin.site.register(Book, BookAdmin)
【讨论】:
IMO 的理想快速解决方案,与添加它相比,并且可以选择更改值【参考方案2】:编辑
我删除了我的答案,因为它与@DanielRoseman 相同,但这只是为了澄清。这是来自documentation:
如果为 False,该字段将不会显示在 admin 或任何其他 模型形式。在模型验证期间它们也会被跳过。默认为 没错。
因此,使用readonly_fields 是可行的方法。
【讨论】:
以上是关于在 Django 管理对象页面中显示对象 ID(主键)的主要内容,如果未能解决你的问题,请参考以下文章