我有一个StackedInline,其模型包含多个字段(包括' id'字段):
class MyInline(admin.StackedInline):
model= myModel
fields = ('id', 'foo', 'bar')
这会按预期显示3个可编辑字段,但是,将其设置为readonly
:
class MyInline(admin.StackedInline):
model= myModel
fields = ('id', 'foo', 'bar')
readonly_fields= ('id','foo','bar')
缺少ID字段,只显示foo
和bar
(不可编辑)。
使用StackedInline
时会发生此行为,TabularInline
正常
为什么ID丢失了,如何将其添加为只读字段?
答案 0 :(得分:1)
首先检查MyModel
模型是否具有模型的外键,该模型将在其中声明为inlines = [MyModel]
。
类似的东西:
# models.py
class Album(models.Model):
# various fields here
class AutoId(models.Model):
id = models.CharField(primary_key=True, max_length=10)
album = models.ForeignKey(Album, blank=True, null=True)
foo = models.CharField(max_length=12)
# admin.py
class AutoIdInline(admin.StackedInline):
model = AutoId
fields = ('id', 'foo', )
readonly_fields = ('id', 'foo', )
@admin.register(Album)
class AlbumAdmin(admin.ModelAdmin):
inlines = [AutoIdInline]
使用该设置,使用Django 1.11和id
主键的一些虚拟值,你应该得到这个(在本地测试并且像魅力一样工作):