Django SQL データベース 操作 まとめ 入門(4)Where条件、演算子、LIKE
更新日:2021年2月1日環境:Python3.8.2 Django3.1.5
=,exact,IS NULL
フィールドの値が等しい条件の記載方法です。
QuerySetのメソッドfilter(),exclude(),get()で使用できます。
例
Entry.objects.get(id__exact=14)
Entry.objects.get(id__exact=None)
上記は下記SQLと同等です。
SELECT ... WHERE id = 14;
SELECT ... WHERE id IS NULL;
iexact:大文字小文字は区別しない:WHERE ILIKE
iexactは大文字小文字は区別しないで等しい場合です。
例
上記は下記SQLと同等です。
isnull:True(IS NULL)、False(IS NOT NULL)
例
上記は下記SQLと同等です。
contains:WHERE LIKE
SQLで、LIKEでキーワード検索する場合に使用できます。
例
上記は下記SQLと同等です。
'Lennon honored today' にマッチして 'lennon honored today'にはマッチしません。
icontains:WHERE ILIKE:大文字小文字は区別しない
大文字小文字は区別しないで、LIKE検索する場合です。
例
上記は下記SQLと同等です。(※SQLiteは未対応)
'Lennon honored today' と 'lennon honored today'の両方にマッチします。
in:WHERE IN
リストの値のいずれかに一致
例
上記は下記SQLと同等です。
values() や values_list() を使用する場合の例です。
例
entries = Entry.objects.filter(blog__name__in=inner_qs)
下記は、フィールドが2つ以上あるためエラーとなります。
例
inner_qs = Blog.objects.filter(name__contains='Ch').values('name', 'id')
entries = Entry.objects.filter(blog__name__in=inner_qs)
gt:>:より大きい
例
上記は下記SQLと同等です。
gte:>=:以上
例
上記は下記SQLと同等です。
lt:<:より小さい
例
上記は下記SQLと同等です。
lte:<=:以下
例
上記は下記SQLと同等です。
startswith:WHERE ... LIKE '~%':~ではじまる
例
上記は下記SQLと同等です。(※SQLiteは未対応)
istartswith:WHERE ... ILIKE '~%':~ではじまる(大文字小文字は区別しない)
例
上記は下記SQLと同等です。(※SQLiteは未対応)
endswith:WHERE ... LIKE '%~':~でおわる
例
上記は下記SQLと同等です。(※SQLiteは未対応)
iendswith:WHERE ... ILIKE '%~':~でおわる(大文字小文字は区別しない)
例
上記は下記SQLと同等です。(※SQLiteは未対応)
range:WHERE ... BETWEEN ... AND ...
例start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
上記は下記SQLと同等です。
※注意
上記は pub_date が DateFieldの場合の例ですが、もし pub_date がDateTimeFieldの場合、下記のようにAM0時までとなり最終日が含まれなくなるので、DateFieldかDateTimeFieldかで注意して使用して下さい。