データベースを操作するために、Djangoとtastypieを使い始めています。
そのため、多数のテーブルを含むデータベースがあり、フィルタリングを設定して、関連するDjangoオブジェクトのチェーンを使用して結果をフィルタリングするようなURLを使用できるようにしています。
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オブジェクトの1つを見逃した場合、たとえば
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
しかし基本的に2番目の部分を無視します
lane__lane=8
エラーをスローするか、何も返さないことを期待していました。この状況でエラーをスローするようにtastypieを構成する方法はありますか?(または、これは私が気付いていない何らかの理由で予想される動作ですか)?