现在,我有一个带有Container的管理页面和一个用于Pages的stackedInline。这些页面中包含2个ForeignKeys,并且随着这些ForeignKeys的值增长,该页面将永远呈现。
如何设法显示ForeignKey的值,但不要让它在管理员中变成一个多变的东西?我定义想在内联中显示str(ForeignModel),但我不希望为每个Page模型加载一个包含多个1000个选项的选择框。
我记得在某个地方读过这个,但似乎无法找到它。如果它不在管理员中,我可以更改窗口小部件,但我不知道如何在管理员中执行此操作。
答案 0 :(得分:3)
你在谈论ModelAdmin.readonly_fields吗?
class MyModelAdmin(admin.ModelAdmin):
# Other stuff
readonly_fields = ('myforeignkey',)
而且,为了将来参考,可以轻松更改管理中的小部件。
对于特定字段:
class MyModelAdminForm(forms.ModelForm):
class Meta:
model = MyModel
widgets = {
'somefield': MyWidget(),
}
class MyModelAdmin(admin.ModelAdmin):
form = MyModelAdminForm
适用于特定类型的所有字段:
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': RichTextEditorWidget},
}