如何在Django

时间:2016-01-08 17:00:58

标签: python django django-rest-framework

在我的django应用程序中,我定义了一个具有get_queryset方法的ViewSet:

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

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

请帮助我如何退回两件物品。

我尝试的是我打印查询集对象并尝试通过创建类似于queryset的json对象来欺骗django。但是看起来django在捕获它时非常聪明。

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

2 个答案:

答案 0 :(得分:3)

在作者没有提炼问题之前,第一个猜测是:

In [1]: import networkx as nx

In [2]: G = nx.DiGraph()

In [3]: G.add_edge(1,2) # 1->2

In [4]: G.add_edge(2,3) # 2->3

In [5]: list(G.edges())
Out[5]: [(1, 2), (2, 3)] # 1->2 and 2->3

In [6]: G.add_edge(42,17) # 42->17

In [7]: list(G.edges())
Out[7]: [(1, 2), (2, 3), (42, 17)]

In [8]: for e in G.edges():
   ...:     source,target = e
   ...:     print source
   ...:     
1
2
42

答案 1 :(得分:0)

没有chain的情况下,您可以像这样进行管理:

def list(self, request):
    client = Client.objects.all()
    server = Server.objects.all()
    serializer1 = self.serializer_class(server, many=True)
    serializer2 = self.serializer_class(client, many=True)
    Serializer_list = [serializer1.data, serializer2.data]
    return Response(Serializer_list)