django - 如果所有字段都是只读的,则在管理员中隐藏保存按钮

标签 django django-admin

我使用以下 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

这很好用,但 savesave and continue editing仍然出现。他们不会做任何事情,因为所有字段都是只读的。

因此我的问题是:有没有办法隐藏这些 save按钮取决于所有字段是否为只读?我怎么能实现这个?

编辑 1:

我知道如何覆盖 admin/submit_line.html模板,但我想做的是设置 show_save , show_save_as_newFalse如果我只有只读字段。如何更改这些变量值?

最佳答案

在 django/contrib/admin 中有一个名为 submit_line.html 的文件,用于呈现按钮。要覆盖它们,请在您的模板目录中创建一个名为 admin 的文件夹,然后在 admin/submit_line.html 中按照您想要的方式(基于某些规则)对其进行修改。请注意,以这种方式修改它会影响每个管理对象 View 页面。

关于django - 如果所有字段都是只读的,则在管理员中隐藏保存按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288462/

相关文章:

django - 在 Django admin 中内联多个一对一字段

javascript - 关于 django/javascript 模式以及如何最好地组织/封装的一般查询

django - django如何将字符串转换为模块

python - 未使用 Django Testserver 固定装置

python - django-admin 自定义命令中的两个参数

python - 在管理中将整数选择值显示为字符(不是整数)

python - ValueError at/(未设置所需的参数名称)

python - 描述符 'date' 需要一个 'datetime.datetime' 对象,但收到一个 'unicode'

python - Python 3 和 SQLite3 的 `table "django_migrations "already exists` 错误

python - 一个模型 django 的两个管理类