我正在使用django-rest-framework和通用视图为一个简单的博客应用程序构建API。我正在使用RetrieveUpdateAPIView更新数据。默认情况下,如果我有一个用户1发布的帖子,用户2可以发送一个post请求,并能够修改该帖子的数据。我不希望这种情况发生。这是我尝试过的:
class PostUpdateAPIView(RetrieveUpdateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
def perform_update(self, serializer):
if self.request.user == self.request.POST.get('user'):
serializer.save(user=self.request.user)但这是行不通的。它不允许其他用户更新帖子,但也不允许同一用户更新帖子。我是一个完全的初学者,所以我还不知道如何正确地查询。我能做些什么来让它工作呢?
发布于 2020-09-21 02:26:27
首先,如果用户1创建了一个对象,而用户2想要更改与用户1相关的对象的内容,则称为PULL request,而不是POST。所以,如果你想限制用户改变彼此的内容,你可以在'PostSerializer‘重写update()方法。你可以像这样做smth:
def update(self, instance, validated_data):
user_id = self.request.user_id
if instance.user_id != user_id:
# Raise any exceptionshttps://stackoverflow.com/questions/63978644
复制相似问题