所以我一直在尝试做的是让我的 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/