问题:管理员不授予对模型的访问权限。我怀疑原因是在模型上手动设置app_label
。
我的app_label
课程中有一个被覆盖的db_table
和Meta
的模块。
class FAQ(models.Model):
# some fields
class Meta:
app_label = 'support'
table_name = 'faq_faq'
这是我能想到的:
1。在尝试授予用户权限时,我会在列表中看到,对于此模型,它不会显示<app_label> | <model> | <perm>
通常的格式app_label
1}}在Meta
中设置,但模型名称本身,例如faq | faq | Add..
等等。
2。实际检查权限的ModelBackend
类似乎从app_label
实例属性{{1}中获取Permission
}。
content_type
事实证明,# django/contrib/auth/backends.py
user_obj._perm_cache = set(["%s.%s" % (p.content_type.app_label,
p.codename) for p in user_obj.user_permissions.select_related()])
与用于填充 1中的perms列表的属性相同。,已经注意到与模型中设置的标签不同。由于Permission.content_type.app_label
确实使用正确的has_module_perms
模型实例属性调用,因此权限列表中的预期应用标签不存在,因此用户未被授予访问。
更复杂的是,我还有其他几个具有相同设置的模型(手动设置_meta.app_label
等),它们在用户的详细信息页面上显示得很好。它们在列表中显示正确的应用程序标签,并允许用户访问这些应用程序标签,使管理员在索引页面上显示链接。
问题:虽然这看起来像个错误,但我知道这是一个不常见的情况,我正在研究一个不受支持的版本;我可以解决这个问题,强制权限识别我自己的app_label
吗?
环境: django 1.6.1(是的,EOL),django-suit 0.2.12
非常感谢提前。虽然我更喜欢不涉及数据库混乱的解决方案(改组数据,重新创建表格/模型等),但我也很欣赏其他任何建议。