Python 是否可以在一个请求中混合多个请求?

Python 是否可以在一个请求中混合多个请求?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我已经问过这个问题,但没有人回答。我想再问一次,因为我很确定这个问题很容易被比我更了解Django(我什么都不知道)的人解决。我有一个搜索工具。当我使用它时,它搜索我的五个Django模型,从而向我的RESTAPI发送五个GET请求。恼人的是,它在我的控制台中显示了五个请求。有没有办法“混合”这五个请求,只显示为一个请求?或者,有没有办法在多个型号上执行单个请求?请教我 编辑:我的一个视图执行查询的示例: class ProjectList(generics.ListCreateAPIView)

我已经问过这个问题,但没有人回答。我想再问一次,因为我很确定这个问题很容易被比我更了解Django(我什么都不知道)的人解决。我有一个搜索工具。当我使用它时,它搜索我的五个Django模型,从而向我的RESTAPI发送五个GET请求。恼人的是,它在我的控制台中显示了五个请求。有没有办法“混合”这五个请求,只显示为一个请求?或者,有没有办法在多个型号上执行单个请求?请教我

编辑:我的一个视图执行查询的示例:

class ProjectList(generics.ListCreateAPIView):
    serializer_class = ProjectSerializer #My serializer

    def get_queryset(self):
        queryset = Project.objects.filter(user=self.request.user)
        query = self.request.QUERY_PARAMS.get('query', None)
        # Perf enhancements :
        queryset = queryset.prefetch_related('user', 'tasks')
        # ---
        if query is not None:
            queryset = queryset.filter(
                Q(name__icontains=query) |
                Q(created_on__icontains=query)).order_by('name')

        return queryset

    def pre_save(self, obj):
        obj.user = self.request.user #This links the project to an user
                            #Don't think it's useful here but anyway
我还有四个视图进行查询,每个模型一个。他们都像这一个,所以我不认为这是重要的张贴

这些查询是在我的javascript文件(我使用angularjs)中进行的,如下所示:

this.doSearch = function(query) {
    if (query.length > 2) {
        this.searchengine.projects = $resource('/api/projects').get({query: query});
        this.searchengine.tasks = $resource('/api/tasks').get({query: query});
        this.searchengine.comments = $resource('/api/comments').get({query: query});
    }
}

您可以为搜索创建一个新端点,该端点返回多种类型的对象:

class SearchView(APIView):

    def get(self, request, format=None):
        data = []

        queryset = Project.objects.filter(user=request.user)
        query = self.request.QUERY_PARAMS.get('query', None)
        queryset = queryset.filter(
                Q(name__icontains=query) |
                Q(created_on__icontains=query)).order_by('name')
        serializer = ProjectSerializer(queryset, many=True)
        data.extend(serializer.data)
        #do the same for other types of objects

        return Response(data)

我们这里不提问。为了吸引更多的注意力,你可以把它写下来。这确实是一个复制品,因为我在我的帖子里说我是在转载这个问题。有没有办法“撞”到你链接的那个,并希望有人回答?好的,谢谢@gertvdijk!但是我只有一个名声。你要做什么?请在这里添加部分代码。与django视图类似,django视图将被调用并向您的rest api发送请求。@Roflnaut在站点上投入一些时间,您将获得更多的声誉,以便能够设置奖金。同时,您可以编辑原始问题以包含更多详细信息。努力吧。让它变得棒极了哦,如果你有什么要添加的,请编辑你的评论,而不是发布个人评论。