如何从 Django 中的 get_queryset 方法返回多个查询集对象或添加查询集结果

Ama*_*pta 4 python django django-rest-framework

在我的 django 应用程序中,我定义了一个 ViewSet,它有一个 get_queryset 方法,如下所示:

class SampleViewSet(ReadOnlyModelViewSet):
    serializer_class = SampleSerializer
    permission_classes = (IsAuthorizedToAccess, )

    def get_queryset(self):
        queryset = Sample.objects.filter(submitted_by=self.request.user.id)
        queryset1 = Sample.objects.filter(submitted_by!=self.request.user.id) 
        return queryset
Run Code Online (Sandbox Code Playgroud)

这样我有两个查询集对象,第一个是用户提交的示例,第二个是其他用户提交的示例。这个 SampleViewSet 是从 ajax 请求调用的,我在其中使用返回的查询集对象。

您能帮助我如何退回这两个对象吗?

我尝试的是打印查询集对象,并尝试通过创建类似于查询集的 json 对象来愚弄 django。但看起来 django 在捕捉这一点方面非常聪明。

编辑:问题是我应该寻找 get_queryset 的替代方法,如 list() [来自 Django Rest 框架] 并使用 Httpresponse 返回 json,或者是否有一个真正的解决方案来俱乐部两个查询集对象并从这里返回。

Ale*_*zov 5

在作者还没有细化问题之前,第一个猜测是:

from itertools import chain

def get_queryset(self):
    queryset = Sample.objects.filter(submitted_by=self.request.user.id)
    queryset1 = Sample.objects.filter(submitted_by!=self.request.user.id) 
    return chain(queryset, queryset1)
Run Code Online (Sandbox Code Playgroud)