3

だから私は DRF で私の最初のプロジェクトを書いています。私はすでにdjangorestframework-jwtで認証を行っています。現在、いくつかの異なるビューセットが定義されています。私がやりたいことは、モデル オブジェクトの所有者がそのオブジェクトに必要な変更を加えることができるようにすることですが、(管理者を除いて) 他のすべての人がオブジェクトを表示することさえできないようにすることです。基本的に、特定のメソッドにアクセス許可クラスを適用して、管理者のみが「リスト」を表示し、所有者が「更新、破棄など」を行い、認証されたユーザーが「作成」できるようにする方法が必要です。現在、私は次のようなものを持っています:

class LinkViewSet(viewsets.ModelViewSet):
   queryset = Link.objects.all()
   serializer_class = LinkSerializer

のモデルで

class Link(models.Model):
   name = models.CharField(max_length=200)
   url = models.URLField()
   # another model with a OneToMany relationship
   section = models.ForeignKey('homepage.LinkSection', related_name='links', on_delete=models.CASCADE
   owner = models.ForeignKey('homepage.UserProfile'), related_name='links', on_delete=models.CASCADE)

適用したい権限クラス

class IsOwner(permissions.BasePermission):
   def has_object_permissions(self, request, view, obj):
      return obj.owner == request.user.userprofile

完全にカスタム ビューを作成することでこれを達成できると確信していますが、API を完成させるために基本的にこれが最後に行わなければならないので、これを行うためのより簡単な方法があると感じています。ご協力ありがとうございます。さらに情報が必要な場合はお知らせください。

4

1 に答える 1