【发布时间】:2023-04-08 05:55:01
【问题描述】:
我正在开发一个 Django 项目,我希望允许用户仅在 add_view 上编辑特定字段。所以我已经覆盖了 admin.py 上的 change_view 方法,所以它可以在那里设置我的 readonly_fields。但是 Django 不会显示 readonly_fields。
没有显示只读字段对我来说似乎很奇怪。我的意思是,如果它是只读的,它说读取的部分在哪里?它应该是可读的(仅),而不是可食用的。如果我想隐藏它,应该有一个名为 hidden_fields 的选项。你们不同意吗?
我想知道是否有任何直接的方法可以使我的管理员上的 readonly_fields 可见,但不可食用。
我的 admin.py 看起来像这样:
从 django.contrib 导入管理员 from 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)
【问题讨论】:
-
将
readonly_fields = ('colour',)元组添加到您的BoxAdmin类还不够吗?来自docs -
你确定它不存在吗?除非您明确设置
fields或fieldsets,否则readonly_fields将出现在底部,毕竟所有可编辑字段。 -
@Gocht,好吧。看起来我必须在我的模型管理员上设置 fields 属性才能使 readonly_fields 工作。一旦文档上说 Django 将使用模型上设置的字段作为 ModelAdmin.fields 属性的默认字段集,这真的很奇怪。
-
哦!事实上,它们出现在底部。对不起各位,我的错。我现在觉得自己很蠢很蠢。
-
AAARGH。花了我几个小时的生命。反正。谢谢。有没有办法把这个领域重新建立起来?