Django Auth权限忽略M中设置的模型app_标签

2024-04-25 19:56:23 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:管理员不授予对模型的访问权限。我怀疑原因是模型上的一个手动设置app_label。在

我有一个覆盖了app_label和{}的模块,它们的Meta类中。在

class FAQ(models.Model):
    # some fields
    class Meta:
        app_label = 'support'
        table_name = 'faq_faq'

这就是我能想到的:

1.当试图授予用户对它的权限时,我在列表中看到,对于这个模型,它没有显示在Meta中设置的app_label,而是显示模型名称本身,例如faq | faq | Add..等等。在

2.正在进行实际权限检查的ModelBackend类似乎从Permission实例属性content_type获取{}。在

^{pr2}$

事实证明,Permission.content_type.app_label是用于填充1.中的perms列表的相同属性,已经注意到它与模型中的标签集不同。由于has_module_perms确实是用正确的_meta.app_label模型实例属性调用的,所以权限列表中不存在预期的应用程序标签,因此用户没有被授予访问权限。在

更复杂的是,我有几个其他的模型具有相同的设置(手动设置app_label等等),它们在用户的详细信息页面上显示得很好。它们会在列表中显示正确的应用程序标签,并给用户提供访问这些标签的权限,从而使管理员在索引页上显示链接。在

问题:虽然这看起来像是一个bug,但我知道这是一个不常见的情况,我正在开发一个不受支持的版本;我可以解决这个问题,强制权限识别我自己的app_label?在

环境:django 1.6.1(是,EOL),django套装0.2.12

提前致谢。虽然我更喜欢一个不涉及数据库混乱的解决方案(混乱的数据,重新创建表/模型,等等),但我也很欣赏其他任何建议。在


Tags: 实例用户模型app权限列表属性管理员