【发布时间】:2018-07-25 09:34:46
【问题描述】:
Django Doc 声明新的查看权限已添加到 Django 2.1,但没有进一步说明如何使用,特别是在 Django 管理站点上。
据我了解,这将是一种只读权限,但如果任何人对这个新权限及其在管理站点上的行为有更好的理解,我将不胜感激
【问题讨论】:
标签: django python-3.x django-permissions
Django Doc 声明新的查看权限已添加到 Django 2.1,但没有进一步说明如何使用,特别是在 Django 管理站点上。
据我了解,这将是一种只读权限,但如果任何人对这个新权限及其在管理站点上的行为有更好的理解,我将不胜感激
【问题讨论】:
标签: django python-3.x django-permissions
您正确。 Django 2.1 release notes 描述了这一变化:
模型“查看”权限
“查看”权限已添加到模型
Meta.default_permissions。 运行时会自动创建新的权限 迁移。这允许在管理员中授予用户对模型的只读访问权限。
ModelAdmin.has_view_permission()是新的。实现是 向后兼容,因为不需要分配“视图” 允许具有“更改”权限的用户进行编辑的权限 对象。
此外,ModelAdmin.has_view_permission [Django-doc] 权限的文档解释如下:
ModelAdmin.has_view_permission(request, obj=None)如果允许查看
obj,则应返回True,False否则。如果obj是None,则应返回True或False到 指示是否允许查看此类对象 一般(例如,False将被解释为表示当前 不允许用户查看此类型的任何对象)。默认实现返回
True,如果用户有 “更改”或“查看”权限。
所以在这种情况下,“更改”权限意味着“查看”权限(这是相当合乎逻辑的,因为更改对象而不能先看到它会很奇怪)。
【讨论】:
你是对的,他们没有说明如何使用它,但我发现了如何使用它。默认情况下,查看权限将返回 true,因此它唯一的用例是如果您想阻止用户查看 admin 对象。这就是你可以做到的。
class ViewAdmin(admin.ModelAdmin):
def has_view_permission(self, request, obj=None):
return False
【讨论】: