28

管理インターフェイスを介してユーザーにいくつかの権限を追加しました。

何らかの理由で、すべての perm 関数が失敗します。

>>> user.get_all_permissions()
set([])

ただし、テーブルに直接アクセスすると機能します。

>>> user.user_permissions.all()
(list of permissions as expected)

「get_all_permissions」(および has_perm() などのすべての perm 関数) が失敗する原因は何ですか?

ありがとう

4

2 に答える 2

48

同じ問題がありました。ある時点で、自作の AUTHENTICATION_BACKEND を使用したことがあると思いますか? これに関するネット上のほとんどの例 (DJANGO 1.0 のドキュメントを含む!) では、バックエンドがパーミッションの処理も担当することについて言及していません。

ただし、大したことはありません。コードが存在するバックエンド ファイルに、次のインポートを含めます。

from django.contrib.auth.backends import ModelBackend

次に、作成したバックエンドがModelBackendを拡張していることを確認します。たとえば、次のようになります。

class EmailBackend(ModelBackend):

大丈夫です。

于 2010-05-03T13:15:09.860 に答える