Tastypie - 手动调用其他资源

时间:2016-09-21 12:21:27

标签: django tastypie

我需要创建一个API(名为Dummy),它连接到多个其他API以便应用过滤器

我所做的是在主API的调度方法上调用调度方法。我为每个被调用的API更改了请求QUERY_STRING

Application_Start

现在,当我调用第一个API时,一切正常,我得到了正确的过滤结果。但是当我调用第二个API时,它会返回所有结果而不使用任何过滤器。我可以确认QUERY_STRING已正确更改,并且无法理解为什么这不起作用。我试过反转调用顺序,结果是第一次调用任何API时应用了过滤器但第二次不适用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

确定我弄错了什么。我正在为所有调度方法重用相同的请求对象。这意味着查询过滤器没有改变。

    def dispatch(self, request_type, request, **kwargs):
        import copy
        request2=copy.copy(request)

#Call the 1st API
        request.META['QUERY_STRING']='years_experience__in=2&production_2015__gt=105000'
        obj=APIONEResource()
        print 'Result'+str(obj.dispatch(request_type, request, **kwargs))

#Call the 2nd API    
        request2.META['QUERY_STRING']='LOS__contains={2}&annual_production__in=4'
        obj=APITWOResource()
        print 'Result'+str(obj.dispatch(request_type, request2, **kwargs))