2012-11-09 57 views
1

我开始使用Django和tastypie来与我的数据库进行交互。tastypie过滤

因此,我有一个数据库与一些表,我可以设置筛选,以便我可以使用像这样的URL,使用相关的Django对象链过滤我的结果。

api/seq/mapping/?loadedwith__lane__flowcell__name=C16P5ACXX&loadedwith__lane__lane=8 

映射资源被设置如下:

class MappingResource(ModelResource): 
    loadedwith = fields.ToOneField('sequencing.api.LoadedWithResource' , 'loadedwith') 
    class Meta: 
     queryset = Mapping.objects.all() 
     resource_name = 'mapping' 
     allowed_methods = ['get' , 'post' , 'put' , 'patch' , 'delete'] 
     authorization = Authorization()       
     serializer = PrettyJSONSerializer() 
     filtering = { 
      'loadedwith': ALL_WITH_RELATIONS, 
      'reference_filename' : ALL 
     } 

这一切工作正常,因为我希望它。

现在我注意到一个问题,当我搞砸了URL。 如果我错过链上的一个loadedwith对象,例如

loadedwith__lane__lane=8 

,而使用

lane__lane=8 

这样的URL结束为:

api/seq/mapping/?loadedwith__lane__flowcell__name=C16P5ACXX&loadedwith__lane__lane=8 

现在这个返回由第一部分筛选的结果:

loadedwith__lane__flowcell__name=C16P5ACXX 

但基本上忽略了第二部分

lane__lane=8 

我会期望它会抛出一个错误,或不返回任何东西。有没有办法配置tastypie在这种情况下抛出错误? (或者由于某种原因,我不知道这是预期的行为)?

回答