django - Django 管理界面中的只读模型?

标签 django django-admin readonly

如何在管理界面中使模型完全只读?这是一种日志表,我在其中使用管理功能进行搜索、排序、过滤等,但不需要修改日志。

如果这看起来像重复的,这不是我正在尝试做的:

  • 我不是在寻找只读字段(即使将每个字段设为只读仍然可以让您创建新记录)
  • 我不想创建只读用户:每个用户都应该是只读的。

最佳答案

管理员用于编辑,而不仅仅是查看(您不会找到“查看”权限)。为了实现您想要的效果,您必须禁止添加、删除所有字段并将所有字段设置为只读:

class MyAdmin(ModelAdmin):

    def has_add_permission(self, request, obj=None):
        return False

    def has_delete_permission(self, request, obj=None):
        return False

(如果你禁止改变你甚至看不到对象)

对于一些试图自动将所有字段设置为只读的未经测试的代码,请参阅我对 Whole model as read-only 的回答

编辑:也未经测试,但只是看了一下我的 LogEntryAdmin,它有

readonly_fields = MyModel._meta.get_all_field_names()

不知道这是否适用于所有情况。

编辑:QuerySet.delete() 仍然可以批量删除对象。要解决这个问题,请提供您自己的“对象”管理器和相应的不删除的 QuerySet 子类 - 参见 Overriding QuerySet.delete() in Django

关于django - Django 管理界面中的只读模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265328/

相关文章:

django - Django 中复杂的 "limit_choices_to"函数

django 内联小部件模板脚本在添加另一个内联时未呈现

django - 如何使用 list_display=[] 在管理中调用 OneToOneField 值

c# - ReadOnlyAttribute 与 PropertyDescriptor.IsReadOnly()

c# - 不可修改的变量

python - Django Form - 动态切换字段存在

python - 为什么django不保存加密密码?

python - Django 找不到静态文件夹

django - 使用 django-rest-framework 获取模型的随机对象

objective-c - 在 ObjC 中设置只读属性