gpt4 book ai didi

django - 如何使用 django rest 框架检索用户创建的所有项目

转载 作者:行者123 更新时间:2023-12-05 02:58:32 24 4
gpt4 key购买 nike

我试图只获取属于下面特定用户的类(class),我有模型、序列化程序和 View ,我正在使用它来尝试实现这一点。如果我从 View 中删除整个 get_queryset 函数,api 将返回相应的用户以及每个用户创建的每个类(class)。如果 get_queryset 仍然存在,则 api 始终返回未找到的用户并且仍然提供存在的每个类(class)。谁能告诉我如何才能达到我想要的结果。

查看:

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
permission_classes = [IsProfileOwnerOrReadOnly]
# queryset = User.objects.all()
serializer_class = UserSerializer

def get_queryset(self):
user = self.request.user
queryset = User.objects.all()
if user is not None:
queryset = queryset.filter(courses__owner_id=user.id)
return queryset

序列化器

class UserSerializer(serializers.ModelSerializer):
courses = serializers.PrimaryKeyRelatedField(
many=True, queryset=Course.objects.all())
class Meta:
model = User
fields = ['id', 'username', 'courses']

模型

class Course (models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
pub_date = models.DateField(default=date.today)
owner = models.ForeignKey('auth.User', related_name='courses', on_delete=models.CASCADE)
def __str__(self):
return self.title

最佳答案

您需要按用户过滤对象

    class CreatePostsView(viewsets.ModelViewSet):
model = Post
serializer_class = PostsSerializer


def get_queryset(self):
user = self.request.user

return Post.objects.filter(owner=user)

关于django - 如何使用 django rest 框架检索用户创建的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58913857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com