ドキュメントを読むと、Django のデフォルトのパーミッション システムがモデルに関連付けられていることがわかりました。これは、管理インターフェイス用に作成されているため理解できます。
これはビューにとって何を意味しますか? ビューのアクセス許可のみを使用している場合、アクセス許可に接続されているモデルは使用されませんか?
ここで、この質問をもう少し具体的にします。私の目標は、ビューを 1 つの特定のユーザー グループに限定することです。
ContentType を作成します。
content_type = ContentType.objects.get(app_label='myapp', model='SomeModel')
アクセス許可を作成します。
permission = Permission.objects.create(codename='can_view_this', name='Can Access this View', content_type=content_type)
グループを作成します。
group = Group.objects.get_or_create(name='some_group')
グループに権限を追加します。
group.permissions.add(permission)
グループにユーザーを追加します。
group.user_set.add(User.objects.get(id=1))
許可をテストします。
@user_passes_test(lambda u: u.has_perm('myapp.can_view_this'))
def some_view(request):
ステップ 1 に戻ると、ContentType を作成するためにモデルを割り当てる必要があったことに注意してください。また、Permission エントリの作成には ContentType が必要であるため、ContentType を作成する必要がありました。
問題は、もう一度言いますが、SomeModel
それはこのシナリオでまったく使用されているのでしょうか? ビュー固有のアクセス許可を割り当てるモデルが正確に何であるかはわかりませんが、意味がありません。
うまくいけば、質問は理にかなっています。