Django Filter
Filter(フィルター)
このfilter()
メソッドは検索をフィルタリングするために使用され、検索した文字に一致する行のみを返すことができます。
前の章で学んだように、次のようにフィールド名でフィルタリングできます。
SQLでは、上記のステートメントは次のように記述されます。
AND
このfilter()
メソッドは引数を**kwargs(キーワード引数)として受け取るため、複数のフィールドをカンマで区切ってフィルタリングできます。
例
lastnameが"Refsnes"でIDが2のレコードを返します。
SQLでは、上記のステートメントは次のように記述されます。
OR
firstnameがEmilまたはfirstnameがTobiasのレコードを返す(つまり両方マッチする必要はなく、どちらかのクエリにマッチするレコードを返す)ことは、上記のANDの例ほど簡単ではありません。
複数の filter()
メソッドを、パイプ 文字|
で区切って使用することができます。結果は1つのモデルに結合されます。
例
firstnameが「Emil」または「Tobias」のいずれかであるレコードを返します。
もう1つの一般的な方法は、Q式をインポートして使用することです。
例
firstnameが「Emil」または「Tobias」のいずれかであるレコードを返します。
SQLでは、上記のステートメントは次のように記述されます。
Field Lookups(フィールドルックアップ)
Djangoには、SQLステートメントとWHERE句を指定する独自の方法があります。
Djangoで特定のwhere句を作成するには、「Field Lookups」を使用します。
フィールドルックアップは、特定のSQLキーワードを表すキーワードです。
例:
__startswithキーワードを使用します。
次のSQLステートメントと同じです。
上記のステートメントは、firstnameが「L」で始まるレコードを返します。
フィールドルックアップの構文
すべてのフィールドルックアップキーワードは、フィールド名、その後に続く2つのアンダースコア文字(!)、およびキーワードで指定する必要があります。
今回のMember
モデルの場合、ステートメントは次のように記述されます。
例
firstname
文字「L」で始まるレコードを返します。
フィールドルックアップリファレンス
全フィールドの検索キーワードのリスト:
Keyword | Description |
---|---|
contains | フレーズが含まれています |
Icontains | containsと同じですが、大文字と小文字は区別されません |
date | 日付と一致します/td> |
day | 日付(1日~31日)に一致します(日付の場合) |
endswith | で終わる |
Iendswith | endwidthと同じですが、大文字と小文字は区別されません |
exact | 完全一致 |
Iexact | 完全一致と同じですが、大文字と小文字は区別されません |
In | 値の1つに一致します |
Isnull | NULL値に一致 |
gt | より大きい |
gte | 以上 |
hour | 1時間に一致(日時の場合) |
lt | 未満 |
LTE | 以下 |
minute | 1分に一致(datetimesの場合) |
month | 月に一致する(日付の場合) |
quarter | 年の四半期(1~4)に一致します(日付の場合) |
range | 間の一致 |
regex | 正規表現に一致 |
Iregex | 正規表現と同じですが、大文字と小文字を区別しません |
second | 秒に一致します(datetimesの場合) |
startswith | で始まる |
Istartswith | startswithと同じですが、大文字と小文字は区別されません |
time | 時刻に一致します(datetimesの場合) |
week | 週番号(1~53)に一致(日付の場合) |
week_day | 曜日に一致(1-7) 1は日曜日 |
iso_week_day | ISO8601の曜日(1~7)に一致します 1は月曜日です |
year | 年に一致(日付の場合) |
iso_year | ISO8601年(日付)に一致します |
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。