2012-11-09 92 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在這種情況下拋出錯誤? (或者由於某種原因,我不知道這是預期的行爲)?

回答