2016-09-27 5 views
1

私はUserオブジェクトのインスタンスを作成しています。作成自体は標準User.objects.create_userコールであり、正常に動作します - ユーザーが作成されます。その後、私は彼または彼女にいくつかの権限を追加しようとしている:あなたが見ることができるようにユーザーがDjango Rest Frameworkに保存されたときに権限を追加する

for name in ('view_restaurant', 'change_restaurant', 'delete_restaurant', 
      'view_meal', 'add_meal', 'change_meal', 'delete_meal', 
      'view_order', 'delete_order', 
      'view_historicalorder', 'add_historicalorder', 'change_historicalorder', 
      'view_orderitem', 
      'view_historicalorderitem', 
      'view_restaurantemployee', 'add_restaurantemployee', 'change_restaurantemployee', 'delete_restaurantemployee'): 
    permission = Permission.objects.get(codename=name) 
    print(permission is None) 
    user.user_permissions.add(permission) 
    user.save() 
    print(user.has_perm(permission)) 

、最後の行で、私は、ユーザーが適切なアクセス権が割り当てられたかどうかをチェックし、数行よ上記の許可がNoneかどうか確認しています。その結果、アクセス権オブジェクトは決してnoneになりませんが、user.has_perm呼び出しは常にfalseを返します。私はここで間違って何をしていますか?

答えて

1

あなたはhas_permに間違って電話しています。両方の提案のため

codenames = 'view_restaurant', 'change_restaurant', ... 
perms = Permission.objects.filter(codename__in=codenames) 
user.user_permissions.add(*perms) 
+0

ありがとう:さておき、私はそうのようなコードを簡素化するために勧告することができるように、それは、この形式の文字列

"<app label>.<permission codename>" 

を期待します! –

関連する問題