【发布时间】:2021-01-06 17:51:32
【问题描述】:
我正在使用 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)
但这不起作用。它不允许其他用户更新帖子,但也不允许同一用户更新帖子。我是一个完整的初学者,所以我还不知道如何正确查询。我可以做些什么来完成这项工作?
【问题讨论】:
-
你的 Post 模型可能有一个“用户”属性,检查 request.user 是否为 post.user。如果您想首先使用查询集过滤器
queryset = Post.objects.filter(user=request.user) -
如果我错了,请纠正我。您只希望创建帖子的用户能够修改它吗?
标签: django django-rest-framework django-users