gpt4 book ai didi

python - Django REST 和 ModelViewSet 过滤

转载 作者:行者123 更新时间:2023-11-28 19:53:11 24 4
gpt4 key购买 nike

我之前使用的 APIViews 如下所示:

View .py

class AllProgramsApi(APIView):

def get(self, request):
user = self.request.user
userprograms = Program.objects.filter(user=user)
serializer = ProgramSerializer(userprograms, many=True)
return Response(serializer.data)

这是我的模型:

class Program(models.Model):

program_name = models.CharField(max_length=50)
program_description = models.CharField(max_length=250)
cycles = models.ManyToManyField(Cycle)
is_favourite = models.BooleanField(default="False")
user = models.ForeignKey(User, on_delete=models.CASCADE)

def get_absolute_url(self):
return reverse('programs:program', kwargs={'pk': self.pk})

def __str__(self):
return self.program_name

现在我发现了ModelViewSet,它看起来很方便,但我似乎无法像以前在APIView中那样为用户进行过滤。

我对 views.py 和 ModelViewSet 的尝试如下,它有效,但我得到了所有内容,而不仅仅是与单个用户相关的内容。

class AllProgramsApi(ModelViewSet):
serializer_class = ProgramSerializer
queryset = Program.objects.all()

如何调整 ModelViewSet,使其仅显示与发送请求的用户相关的内容?什么是最好的方法?

谢谢。

最佳答案

你可以使用get queryset方法,如果你知道更多请引用文档Filtering against the current user

class AllProgramsApi(ModelViewSet):
serializer_class = ProgramSerializer
queryset = Program.objects.all()
def get_queryset(self):
queryset = self.queryset
query_set = queryset.filter(user=self.request.user)
return query_set

关于python - Django REST 和 ModelViewSet 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323417/

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