web-dev-qa-db-ja.com

Djangoのグループから現在のユーザーの権限を確認するにはどうすればよいですか?

グループEuropartsBuyerProductという名前のモデルがあります。

次のコードは、Productモデルに権限を追加します。

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

別のビューで次のコードを使用すると

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

結果はTrueになるはずですが、Falseが表示されています。したがって、if句の下のコードは実行されません。

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

ここで何が悪いのですか?

10
MiniGunnR

これを試して:

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

docs から:

ここで、各パーマは「app_label.permission codename」の形式です。

23
neverwalkaloner