在我的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,或者是否有一个真正的解决方案,可以从两个查询集对象返回并从这里返回。
答案 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)