2017-02-06 7 views
1

私はグループEuropartsBuyerProductというモデルを持っています。Djangoで現在のユーザーの権限をグループから確認するには?

次のコードは、製品モデルにアクセス許可を追加します。

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

私の意見の1つに、この権限をそのグループに追加するためのコードがあります。

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にユーザーを追加しました。

Iは

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

別のビューで次のコードを使用すると結果がTrueことになっているが、それはFalseを示しています。したがって、if節の下のコードは実行されません。

現在ログインしているユーザーをDjangoシェルにインポートしましたが、再度アクセス許可をテストするとFalseと表示されます。

私はここで間違っていますか?

+0

からrequest.userどうかを確認しましたAnonymousUserインスタンスですか? –

+0

@ThulasiRamはい。私は特定のビューにアクセスするためにログインする必要があります。 – MiniGunnR

+0

あなたがログインしているにもかかわらず、DRFを使用し、認証クラスを削除した場合、そのユーザーは匿名になります。だからあなたはあなたが確信できるように許可をチェックする前に、まずrequest.userを印刷してみることができます。 @MiniGunnR –

答えて

4

このお試しください:docsから

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

を:

各パーマが形式である場合 'app_label.permissionコードネーム'

関連する問題