Я работаю над REST API с Django Rest Framework, и в моем ModelViewSet мне нужно проверить, что текущий request.user
имеет право редактировать определенный объект.
Я нашел часть документации, которая определяет, как работают разрешения - но это на стороне ViewSet, а не на стороне сериализатора:
class FooViewSet(viewsets.ModelViewSet):
model = Foo
serializer_class = FooSerializer
def get_queryset(self):
return self.request.user.foos.all()
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def get_permissions(self):
if self.action == "list":
permission_classes = [permissions.IsAuthenticated]
else:
permission_classes = [IsObjectUser]
return [permission() for permission in permission_classes]
Это будет нормально работать для 403ing, когда это не соответствующий пользователь, но я полагаю, что я должен также выполнять проверку на уровне сериализатора? Как я могу получить объект в моем методе validate
для проверки?
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = [
"type",
"title",
"description",
"image",
]
def validate(self, attrs):
# <-- how can I get the object so I can check against the self.request.user?