27 votes

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

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

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

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

Dans une de mes vues, j'ai le code suivant pour ajouter cette permission à 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 montre False . Ainsi, le code sous la clause if ne s'exécute pas.

J'ai importé l'utilisateur actuellement connecté dans le shell Django et lorsque je teste à nouveau l'autorisation, le résultat est Faux.

Qu'est-ce que je fais de mal ici ?

62voto

neverwalkaloner Points 25459

Essayez ça :

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

De la docs :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X