web-dev-qa-db-fra.com

Comment vérifier les autorisations de l'utilisateur actuel d'un groupe dans Django?

J'ai un groupe EuropartsBuyer et un modèle nommé Product.

Le code suivant ajoute une autorisation au modèle de produit.

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

Dans l'une de mes vues, j'ai le code suivant pour ajouter cette autorisation à ce groupe.

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)

Avec l'aide de Django Admin, j'ai ajouté un utilisateur au groupe EuropartsBuyer.

Lorsque j'utilise le code suivant dans une autre vue

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

le résultat est censé être True mais il affiche False. Ainsi, le code sous la clause if ne s'exécute pas.

J'ai importé l'utilisateur actuellement connecté dans Django Shell et lorsque je teste à nouveau l'autorisation, elle affiche False.

Qu'est-ce que je fais mal ici?

10
MiniGunnR

Essaye ça:

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

De la docs :

où chaque perm est au format "app_label.permission codename"

23
neverwalkaloner