为什么有权删除模型的用户对 has_perm(app.delete_modelname) 返回 false

发布于 2024-10-15 01:38:21 字数 462 浏览 1 评论 0原文

我正在为应用程序使用 django 管理界面。我在一个名为“books”的应用程序中有一些模型。除了管理员(具有超级用户状态)之外,还有两个用户“经理”和“员工”。 “员工”用户只能添加模型。 “管理员”可以添加、更改和删除图书应用程序中的每个模型。我通过管理界面授予了权限。但在 shell 中,“manager”的 has_perm(books.delete_ModelName) 返回 False。

>>> u = User.objects.get(username__exact="manager")
>>> u.has_perm("books.delete_ModelName")
False

当通过管理界面向“经理”授予超级状态时,has_perm(books.delete_ModelName) 返回 True。为什么会出现这种情况?我想根据此权限设置对特定页面的访问权限。有什么解决办法吗?

I am using django admin interface for an application. I have some models in an app named 'books'.There are two users 'manager' and 'employee' other than admin (with superuser status).
The 'employee' user can only add models. The 'manager' can add, change and delete every models in books app.I gave the permissions through the admin interface. But in shell has_perm(books.delete_ModelName) for 'manager' returns False.

>>> u = User.objects.get(username__exact="manager")
>>> u.has_perm("books.delete_ModelName")
False

When giving superstatus to 'manager' through admin interface has_perm(books.delete_ModelName) returns True. Why this happens? I want to set access to a specific page based on this permission. Is there any work around?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不打扰别人 2024-10-22 01:38:21

问题解决了。问题出在 ModelName 上。如果模型的名称是“ModelName”,则会将其转储为权限中的模型名称。所以这里应该是

>>> u.has_perm("books.delete_modelname")

Got the problem solved. The problem was with the ModelName. if the name of a model is 'ModelName', it is dumped as modelname in permissions. So here it should be

>>> u.has_perm("books.delete_modelname")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文