假设我有以下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)
在admin中查看现有的Book
时,只有name
字段可见。
我的问题是:该ID也可以在此页面中显示吗?
我找到的大多数答案都与管理员列表有关,而不是对象示例页面。显示ID字段的一种方法是通过从模型定义中删除editable=False
使其可编辑。但是,我希望将其保持为只读。
3条答案
按热度按时间bhmjp9jg1#
您可以将其添加到modeladmin类中的
readonly_fields
。p5cysglq2#
编辑
我删除了我的答案,因为它与@DanielRoseman相同,但这只是为了澄清。这来自文档:
如果为False,则该字段将不会显示在admin或任何其他ModelForm中。在模型验证期间也会跳过它们。默认值为True。
因此,使用readonly_fields是正确的方法。
k4ymrczo3#
要在Django admin中显示模型的主键(PK),您可以通过为模型创建ModelAdmin类并覆盖list_display属性来自定义管理界面。下面是一个例子:
在上面的示例中,我们创建了一个继承自admin.ModelAdmin的YourModelAdmin类。我们将'pk'添加到list_display属性中,以在Django管理界面的模型列表视图中包含主键。您还可以包括要在列表视图中显示的其他字段,字段之间用逗号分隔。