【发布时间】:2014-06-18 02:02:48
【问题描述】:
上个月我在 stackoverflow 和 G+ 的 Django-Users 组以及 django 网站上发布了问题。但我没有找到任何可以解决我的问题的答案。我想要做的是在 django 管理面板中添加名为 view 的新权限,因此用户只能查看数据!我还关注了 django 网站上的不同补丁并尝试了django-databrowse,但没有按预期工作。然后我最终决定编辑views of auth/admin。现在我要做的是添加查看权限,例如:
1.在默认权限列表中添加了“查看”
#./contrib/auth/management/init.py
def _get_all_permissions(opts):
"Returns (codename, name) for all permissions in the given opts."
perms = []
for action in ('add', 'change', 'delete', 'view'):
perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))
return perms + list(opts.permissions)
2。测试所有模型都添加了“查看”权限
run manage.py syncdb
在此之后,我只能将查看权限分配给用户。现在这个视图权限也必须起作用。所以我正在写这段代码:in view.py of django-admin
for per in request.user.user_permissions_all():
print per
此代码打印分配给登录用户的权限,例如auth | permission | can view department 等
现在我可以通过拆分这句话来获得权限类型和模型名称。我将获得应用程序的所有模型名称,并将匹配必须可见的数据。这又不是我真正需要的,但可以工作。
所以我的问题是:
*这是我应该做的还是还有其他方法。我只想要一个必须按预期工作的解决方案。需要您的帮助 *
【问题讨论】:
-
默认 view permissions 和 ModelAdmin.has_view_permission 是在 Django 2.1 中引入的。
标签: python django permissions