0

django-tastypie で API を書いています。オブジェクトのフィルタリングにクエリ文字列を使用する API。

例: first_name に 'foo' が含まれる顧客を見つけたい場合、次のクエリ文字列を API エンドポイントに渡してフィルタリングします。

myapi/customers/?first_name__icontains=foo

名に「foo」、姓に「bar」を含む顧客を検索するに:

myapi/customers/?first_name__icontains=foo&last_name__icontains=bar

名または姓に「foo」が含まれる顧客を検索したい。しかし、クエリ文字列内で OR フィルターを指定する最良の方法は何なのかわかりません。

オプション: 以下の||ように、クエリ文字列を使用してサーバー側で解析することで解決できますが、これが推奨される方法かどうかはわかりません。

myapi/customers/?first_name__icontains=foo||last_name__icontains=foo

結果のフィルタリングにクエリ文字列を使用する API を見ましたが、クエリ文字列内で OR フィルタリングを行う関連記事は見つかりませんでした。このアプローチは間違っていますか?そうでない場合;

クエリ文字列で OR ステートメントを使用する最良の方法は何ですか?

注: django-tastypie__icontainsはデータベース内の類似検索を使用していますが、無視してください:

last_name__icontains=fooに等しいlast_name ilike '%foo%'

4

1 に答える 1