私のアプリはフォーラムのようなものですが、各投稿にはそれを見ることができる人々のグループがあるとしましょう。
SecretPost(Model):
can_see = myapp.main.models.GroupOfUsers()
これらの投稿へのユーザーのアクセスを制限するビューを作成したいのですが、デコレータを使用したいと思います。これは、他の場所でアクセス制御を処理してきた方法だからです。
SecretPostView(DetailView):
"""Can only be seen by members of its group"""
@method_decorator(part_of_its_group)
def dispatch(self, request, *args, **kwargs):
return super(SecretPostView, self).dispatch(request, *args, **kwargs)
しかし、dispatch()
が呼び出されたとき、私はそのオブジェクトについて何も知りません。オブジェクトが既に取得された後にユーザー アクセスを制限する適切な/慣用的な方法はありますか?