Django admin:代理模型的用户权限

Posted

技术标签:

【中文标题】Django admin:代理模型的用户权限【英文标题】:Django admin: User permissions for proxy model 【发布时间】:2014-02-22 10:11:51 【问题描述】:

我创建了一个应用程序,其中模型只是代理模型,继承自另一个应用程序的模型。 现在我遇到了问题,我无法通过管理界面授予用户编辑这些模型的权限。

在管理页面的“用户”应用中,我通常可以授予和撤销特定应用的权限,但该应用甚至没有列出。 我已经尝试过syncdb,但这对我没有帮助。

this SO 线程中的答案也没有帮助我

编辑 我只是尝试创建一个新模型(在应用程序内部,仅包含代理模型)。 对于此模型,可以授予权限。

当然,由于代理模型使用与其父模型相同的数据,因此如果允许用户更改父模型,则不需要额外的权限。但是每次我尝试访问此模型时,它都会显示“禁止”

【问题讨论】:

见***.com/questions/8096980/… 和***.com/questions/15037642/… - 这是一个已知的Django 问题(code.djangoproject.com/ticket/11154)。 【参考方案1】:

在我的情况下,我做了与您类似的事情,我为用户添加了一个代理模型,但无法获得相关权限以显示在权限选项卡中。 做一个 manage.py makemigrations & manage.py migrate 修复了它,它包括 contenttype 表中的相关字段或类似的东西。

【讨论】:

【参考方案2】:

我以前从未使用过代理模型,但我认为您可能需要将它们分开设置,但无论如何我认为您应该尝试通过运行此行来备份数据库

python manage.py dumpdata your_app --all > /home/you/your_project/backup.json

然后重置该模型

python manage.py dumpdata reset your_app

完成后再次加载您的数据

python manage.py loaddata your_app /home/you/your_project/backup.json

看看这是否能解决你项目中的问题

【讨论】:

以上是关于Django admin:代理模型的用户权限的主要内容,如果未能解决你的问题,请参考以下文章

Django admin,如何在 django 模板中正确检查用户的权限?

Django admin 根据权限过滤行

Django Admin Cookbook-18如何限制对Django Admin管理部分功能的使用

在 django admin 中有条件地取消注册或注册模型

Django 中的功能权限

Vue-element-admin用户鉴权管理(路由+按钮级别)