2

私はいくつかの異なるプロファイルを持っています。これらのプロファイルにアクセス許可を関連付けたいと考えています。私はこのようにしました:

class StudentProfile(UserProfile):
    school = models.CharField(max_length=30)
    class Meta:
        permissions = (
            ("is_student","Can access student pages"),
        )

ただし、そのプロファイル オブジェクトで has_perm を使用してその権限が存在するかどうかを確認しようとすると、「'StudentProfile' オブジェクトには属性 'has_perm' がありません」というエラーが表示されます。私はドキュメントを読みましたが、それが私がすべきだと思ったことです

編集: ドキュメントをもう一度読んだ後、has_perm はユーザーのプロファイルではなく、ユーザーに属するメソッドのようです。ただし、権限を表示しようとすると:

print user.get_all_permissions()

空のセットを取得します。「appname.is_student」のようなものは表示されませんか?

4

1 に答える 1

4

.has_permUserオブジェクトではなく、オブジェクトのメソッドUserProfileです。ユーザーが has_student パーミッションを持っていることを検証しようとしている場合は、次のようにする必要があります。

user.has_perm('profiles.is_student')

StudentProfile モデルがprofilesアプリケーション内にあると仮定します。

EDIT : 言い換えられた質問に対処するには、グループまたは特定のユーザーに通常の方法でアクセス許可を割り当て、User.has_perm. 後者の例は、Django パーミッション システムの要点に完全に反しています。

于 2011-01-04T18:58:32.373 に答える