python-3.x - 未定义 DRF 请求来获取当前用户 ID

标签 python-3.x django-rest-framework

所以我一直在尝试做的是让我的 API View 只返回具有 post_user 属性的对象到登录用户的当前 ID。这些 post_user 属性会被填充,因为每当我发布时,它都会通过序列化器使用当前用户的 ID 填充变量。

但是,我没有成功,因为它说请求未定义。我只想获取当前用户的 id,以便我可以使用它来过滤我的对象返回

View .py

# To retrieve and list all posts with DRF
class ListPosts(generics.ListCreateAPIView):
    queryset = Posts.objects.get(post_user=request.user.id)
    serializer_class = PostsSerializer
    permission_classes = (permissions.IsAuthenticated,)

序列化器.py

# serializer for posts to be taken
class PostsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Posts
        fields = ('id','post_title','post_content',)

    def create(self, validated_data):
        posts = Posts.objects.create(
            post_title=validated_data['post_title'],
            post_content=validated_data['post_content'],
            # gets the id of the current user
            post_user=self.context['request'].user.id, 
        )

        posts.save()
        return posts

最佳答案

错误在行

queryset = Posts.objects.get(post_user=request.user.id)

此处的请求未在类声明时定义。解决方案是您可以重写 get_queryset 方法。

class ListPosts(generics.ListCreateAPIView):
   queryset = Posts.objects.all()
   serializer_class = PostsSerializer
   permission_classes = (permissions.IsAuthenticated,)

   def get_queryset(self, *args, **kwargs):
      return Posts.objects.filter(post_user=self.request.user)

关于python-3.x - 未定义 DRF 请求来获取当前用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509880/

相关文章:

python-3.x - 检查进程是否卡在 Jupyter iPython 笔记本中

django - 如何使 Django Rest Framework 中的 HyperlinkedModelSerializer 为外键工作?

python - Django Rest Framework - JSON Post 请求 ManyTomany 字段问题

django rest 框架 perform_update 或 post_save 返回自定义响应

python - 对触发新流程的函数进行单元测试

python - 正则表达式捕获字符串的两个部分

python - 将 <> 运算符转换为 python3

python - 如何根据 id 和 "original date"范围填充 Pandas 数据框?

Django rest 框架自定义 Response 中间件

python - 使用 Django REST Framework 的 Solr 搜索结果