假设我有以下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
使其可编辑。但是,我想把它保持为只读。
答案 0 :(得分:4)
您可以在modeladmin类中将其添加到readonly_fields
。
class BookAdmin(admin.ModelAdmin):
readonly_fields = ('id',)
admin.site.register(Book, BookAdmin)
答案 1 :(得分:1)
修改强>
我删除了我的答案,因为它和@DanielRoseman一样,但这只是为了澄清。这来自documentation:
如果为False,该字段将不会显示在管理员或任何其他字段中 的ModelForm。在模型验证期间也会跳过它们。默认是 真。
因此,使用readonly_fields是可行的方法。