我正在开发一个 Django 项目,我想在其中允许用户仅在 add_view 上编辑特定字段。所以我已经覆盖了 admin.py 上的 change_view 方法,所以它可以在那里设置我的 readonly_fields。但是 Django 不会显示 readonly_fields。
不显示只读字段对我来说似乎真的很奇怪。我的意思是,如果它是只读的,它说读的部分在哪里?它应该是可读的(仅),而不是可编辑的。如果我想隐藏它,应该有一个名为 hidden_fields 之类的选项。你们不同意吗?
我想知道是否有任何直接的方法可以让 readonly_fields 在我的管理员上可见,但不可编辑。
我的 admin.py 看起来像这样:
从 django.contrib 导入管理员 从 core.models 导入框
class BoxAdmin(admin.ModelAdmin):
def change_view(self, request, object_id, form_url='', extra_context=None):
self.readonly_fields = ('colour',)
return super(BoxAdmin, self).change_view(request, object_id)
def add_view(self, request, form_url='', extra_context=None):
self.readonly_fields = []
return super(BoxAdmin, self).add_view(request, extra_context=c)
请您参考如下方法:
您应该覆盖 get_readonly_fields,而不是设置 self.readonly_fields .
def get_readonly_fields(request, obj=None):
if obj is None: # add form
return []
else:
return ['colour']
