2017-06-27 9 views
0

パーミッションを作成しようとしているので、すべてのユーザが特定の著者の記事を見ることができます。アクセス許可の例は、Can view author1,Can view author2など、Can view allです。記事のクラスでは、私は次のように権限を作成しようとした:djangoのモデルフィールド名に基づいてパーミッションを作成する

class Article(models.Model) 
    #some not important stuff 
    class Meta: 
     permissions = (
      ('view_%s' % Author.name, 'Can view %s' % Author.name), 
      ('view_all', 'Can view all'), 
     ) 

私は権限がデータベースに格納されている知っている。これは、このように権限を作成することも可能です、仕事やからしませんでしたか?

答えて

0

私はより良い設計ソリューションがあることだと思う:

class Author(models.Model): 
    ... 
    my_allowed_viewers = models.ManyToManyField('self', related_name='views_allowed', reverse=False) 

、その後、これは私が達成しようとしているものではありません

class IsAuthorizedReader(permissions.BasePermission): 

    def has_permission(self, request, view): 
     author_id = request.user.id 
     author_to_view_id = request.data.get('author_to_view_id') 
     if author_to_view_id is not None: 
      return Authors.objects.get(pk=author_to_view_id).my_allowed_viewers.filter(author_id).exists() 
     return False 
+0

のような許可を作り、私は許可を作成したいですメタは著者の名前に依存します。 – filtfilt

+0

申し訳ありませんが、私はそれを達成する方法がわかりません... –

関連する問題