如何从Django中的组检查当前用户的权限?

时间:2017-02-06 08:26:27

标签: django permissions django-users django-permissions

我有一个组EuropartsBuyer和名为Product的模型。

以下代码为产品型号添加了权限。

class Meta:
        permissions = (
            ("can_add_cost_price", "Can add cost price"),
        )

在我的一个观点中,我有以下代码将此权限添加到该组。

europarts_buyer, created = Group.objects.get_or_create(name='EuropartsBuyer')
add_cost_price = Permission.objects.get(codename='can_add_cost_price')
europarts_buyer.permissions.add(add_cost_price)

在Django Admin的帮助下,我已将用户添加到组EuropartsBuyer

当我在另一个视图中使用以下代码时

if request.user.has_perm('can_add_cost_price'):
    do something

结果应为True,但显示False。因此,if子句下的代码不会运行。

我已经在Django shell中导入了当前登录的用户,当我再次测试权限时,它显示为False。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:17)

试试这个:

if request.user.has_perm('app_name.can_add_cost_price'):

来自docs

  

其中每个烫发的格式为'app_label.permission codename'