Python Django权限--相同的代码名,不同的名称问题

Python Django权限--相同的代码名,不同的名称问题,python,django,permissions,roles,Python,Django,Permissions,Roles,如果我碰巧有单独的模型,每个模型都具有相应的权限,但具有相同的代码名,那么在检查用户是否具有每种单独类型模型的权限时,是否有办法区分这两种模型 例如,我有两个模型,每个模型都具有自定义权限,如: class Meta: permissions = ( ('can_execute', 'Can execute class1'), ) class Meta: permissions = ( ('can_

如果我碰巧有单独的模型,每个模型都具有相应的权限,但具有相同的代码名,那么在检查用户是否具有每种单独类型模型的权限时,是否有办法区分这两种模型

例如,我有两个模型,每个模型都具有自定义权限,如:

class Meta:
        permissions = (
            ('can_execute', 'Can execute class1'),
        )

class Meta:
        permissions = (
            ('can_execute', 'Can execute class2'),
        )
然后,在检查用户是否具有这些权限时,如

user.has_perm('app.can_execute')

没有办法区分这两者吗?我应该一直使用它,以便每个单独的模型的代码名都是不同的吗?

Django默认权限是每个模型的,并且它们的后缀是模型名

它将确保四个默认权限–添加、更改、删除、, 和视图–为其中一个数据库中定义的每个Django模型创建 已安装的应用程序


假设您有一个带有app_标签foo和模型的应用程序 命名栏,要测试基本权限,应使用:

add: user.has_perm('foo.add_bar')
change: user.has_perm('foo.change_bar')
delete: user.has_perm('foo.delete_bar')
view: user.has_perm('foo.view_bar')
您可以使用相同的后缀模式来创建自己的自定义权限,这样在命名时就不会有冲突

class Meta:
        permissions = (
            ('can_execute_class2', 'Can execute'),
        )

Django的默认权限为每个模型,它们的后缀为模型名

它将确保四个默认权限–添加、更改、删除、, 和视图–为其中一个数据库中定义的每个Django模型创建 已安装的应用程序


假设您有一个带有app_标签foo和模型的应用程序 命名栏,要测试基本权限,应使用:

add: user.has_perm('foo.add_bar')
change: user.has_perm('foo.change_bar')
delete: user.has_perm('foo.delete_bar')
view: user.has_perm('foo.view_bar')
您可以使用相同的后缀模式来创建自己的自定义权限,这样在命名时就不会有冲突

class Meta:
        permissions = (
            ('can_execute_class2', 'Can execute'),
        )

那么,你是说,在上面的例子中,我可以检查诸如“user.has\u perm('app.can\u execute\u class1')”之类的权限?我已经编辑了我的答案,如果你对所有类使用相同的权限,你可以覆盖默认模型权限列表,并将其添加到OK,换句话说,我必须更改代码名,使每个型号的代码名都不同?是的,这只是django如何在内部执行的一个示例。你是说,在上面的示例中,我可以检查诸如“user.has_perm('app.can_execute_class1')”之类的权限吗?我已经编辑了我的答案,如果您对所有类使用相同的权限,您可以覆盖默认模型权限列表并将其添加到OK(确定),换句话说,我必须更改代码名,使每个模型的代码名都不同?是的,这只是django如何在内部执行此操作的一个示例