Djangoでは、クエリセットを使ってデータベースからオブジェクトを取得する際に、filter()メソッドを使用してフィルタリングを行います。__でつなげる構文を使うことで、フィールドに対するさまざまな操作が可能です。例えば:
- exact: 完全一致
- iexact: 大文字・小文字を区別しない一致
- lt: より小さい
- gt: より大きい
- contains: 部分一致
使用例
# 社員番号が "12345" と一致する従業員を取得
Employee.objects.filter(local_id__exact='12345')
# 氏名が "john" と一致する従業員を取得(大文字・小文字を区別しない)
Employee.objects.filter(first_name_kanji__iexact='john')
# メールアドレスに "gmail" を含む従業員を取得
Employee.objects.filter(email_address__contains='gmail')
# 退職日が2023年1月1日より前の従業員を取得
Employee.objects.filter(removed_at__lt='2023-01-01')
# 退職日が2023年1月1日以下の従業員を取得
Employee.objects.filter(removed_at__lte='2023-01-01')
# 年齢>30の従業員を取得
Employee.objects.filter(age__gt=30)
# 年齢が30歳以上の従業員を取得
Employee.objects.filter(age__gte=30)
# 氏名が "佐藤" で始まる従業員を取得
Employee.objects.filter(first_name_kanji__startswith='佐藤')
# 氏名が "john" で始まる従業員を取得(大文字・小文字を区別しない)
Employee.objects.filter(first_name_kanji__istartswith='john')
# 氏名が "太郎" で終わる従業員を取得
Employee.objects.filter(first_name_kanji__endswith='太郎')
# メールアドレスが "gmail.com" で終わる従業員を取得(大文字・小文字を区別しない)
Employee.objects.filter(email_address__iendswith='gmail.com')
# 指定された社員IDリストに含まれる従業員を取得
Employee.objects.filter(local_id__in=[123, 456, 789])
# 退職日が未設定(NULL)の従業員を取得
Employee.objects.filter(removed_at__isnull=True)
# 退職日が2023年1月1日から2023年12月31日の間にある従業員を取得
Employee.objects.filter(removed_at__range=['2023-01-01', '2023-12-31'])
# 退職日が2023年1月1日である従業員を取得
Employee.objects.filter(removed_at__date='2023-01-01')
# 退職年が2023年の従業員を取得
Employee.objects.filter(removed_at__year=2023)
# 退職月が1月の従業員を取得
Employee.objects.filter(removed_at__month=1)
# 退職日が1日の従業員を取得
Employee.objects.filter(removed_at__day=1)