我使用以下 get_readonly_fields
不允许在 django 的管理界面中编辑对象的方法:
def get_readonly_fields(self, request, obj=None):
if obj == None or request.user.is_superuser:
return self.readonly_fields
# marks all fields as readonly otherwise
fields = [f.name for f in self.model._meta.fields]
return fields
这很好用,但
save
和 save and continue editing
仍然出现。他们不会做任何事情,因为所有字段都是只读的。因此我的问题是:有没有办法隐藏这些
save
按钮取决于所有字段是否为只读?我怎么能实现这个?编辑 1:
我知道如何覆盖
admin/submit_line.html
模板,但我想做的是设置 show_save
, show_save_as_new
至 False
如果我只有只读字段。如何更改这些变量值?
最佳答案
在 django/contrib/admin 中有一个名为 submit_line.html 的文件,用于呈现按钮。要覆盖它们,请在您的模板目录中创建一个名为 admin 的文件夹,然后在 admin/submit_line.html 中按照您想要的方式(基于某些规则)对其进行修改。请注意,以这种方式修改它会影响每个管理对象 View 页面。
关于django - 如果所有字段都是只读的,则在管理员中隐藏保存按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288462/