私はdjangoモデルを持っています。そのモデルに所有者(モデルを作成したユーザー)のみがアクセスできるようにしたいと思います。だから私はDjango:モデル所有者へのモデルアクセス許可を制限する方法は?
class IsOwnerOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
# Write permissions are only allowed to the owner of the snippet.
return obj.owner == request.user
を次のようにパーミッションクラスを作成し、
class ItemViewSet(viewsets.ModelViewSet):
queryset = Item.objects.all()
serializer_class = ItemSerializer
permission_classes = (IsOwnerOnly,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
それが動作する単一の項目にアクセスしながらmodelviewset
にこの権限を適用し、しかし、その後も、すべての認証されたユーザーは、項目のリストにアクセスすることができます。だから私はどのように私はその所有者だけにアイテムのアクセスを制限することができますか?REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
}
を示したように、私は設定ページにTokenauthenticationが含まれているし、あなたの場合はどう項目が
class Item(models.Model):
name=models.CharField(max_length=30)
address=models.TextField()
owner = models.ForeignKey('auth.User', related_name='items', on_delete=models.CASCADE)
def __str__(self):
return self.name
'リターンobj.ownerは== request.user'、フィールドは' Item'をモデル化するowner' 'のですか?あなたが何であれ、 'hasOpermission'をクラス' IsOwnerOnly'にオーバーライドする必要がある場合は、オーナーによってアイテムリストにアクセスできる人を制御できません。 – Ykh
yup。私は今それを含めているフィールド –
です。 plsチェック –