我有一个患者模型,默认情况下,' add_patient',' change_patient'和' delete_patient'权限已添加到数据库中。我还想添加一个' view_patient'但我不小心将其指定为“app.view_patient”#39;因为我的应用程序被称为“app'在任何其他地方,除了模型,您需要将此标识符放在权限字符串前面,以指示类级别权限。事实证明,此权限已在内部翻译为' app.app.view_patient'因为Django自动附加了应用程序'模型权限的标识符。
我意识到自己的错误,所以我试图将权限更改为只是' view_patient'但由于某种原因,管理控制台会继续列出以前的权限,即使我在患者模型上没有指定其他权限的情况下运行了多个模型迁移。
我想知道是否有人之前遇到过这个问题,管理页面与新迁移的模型不能很好地同步。
干杯,
答案 0 :(得分:2)
Django不会手动检测或删除数据库中的陈旧权限。
解决问题的最简单方法可能是使用db shell(或GUI工具,如果您已经使用它)从auth_permission
数据库表中删除它们。
如果您需要自动执行此操作,则可以从django.contrib.auth.models
导入Permission
模型,然后过滤并删除过时的权限。