自定义查询集将多个模型实例返回到序列化程序

时间:2015-03-24 13:49:44

标签: python django rest django-rest-framework

我正在使用Django REST Framework来构建自己的API。我已经构建了多种方法而没有任何问题,但我偶然发现了一个无法找到解决方案的情况。

我有一个GET方法,它在内部创建一个查询集,该查询集从与当前用户相关的同一模型中获取多个实例。这就是我的观点:

class getTheList(generics.ListAPIView):
    serializer_class = GetTheThingListSerializer

    def get_queryset(self):
        user = self.request.user
        the_thing = TheThing.objects.get(pk=self.kwargs['pk'])
        return the_thing.get_other_things(user)

可以看出,我已经覆盖了get_queryset()。现在according to the documentation,我应该将查询集和many=True作为序列化程序的参数传递。但是,我无法访问此自定义查询集(self.get_queryset()显然不起作用)。如果我没有传递many=True参数,序列化程序将只接收一个对象而不是多个。

在类的顶部定义时,我已成功使用查询集,但在覆盖get_queryset()时却没有。我该怎么办?

1 个答案:

答案 0 :(得分:0)

基类ListAPIView在内部使用many=true实例化序列化程序,您可以see in the source.

如果您的get_queryset()方法实际上返回了一个查询集,那么您应该没问题。

只有在直接实例化序列化程序时,才必须传递many=true