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%'
。