メインコンテンツまでスキップ

データのフィルタリング (Filtering data)

JSON フィルタリング式は、他の辞書やリストを含むことができる辞書やリストで構成されます。そのようなオブジェクトはすべて論理的な 条件 です。

辞書内の 条件 のセットは、and 論理式によって結合されます。

リスト内の 条件 のセットは、or 論理式によって結合されます。

特別な辞書キー orand、および not は、明示的な論理演算子として使用できます。

or キーに続く値は、or 論理演算子によって結合された 条件 を含むリストである必要があります。and キーに続く値も、条件 を含むリストである必要があります。この場合、そのような 条件and 論理演算子によって結合されます。

not キーに続く値は、この場合値が反転される 条件 である必要があります。

ダッシュ - で始まる辞書キーは無視され、後続の値は、そのようなキーを含む式にマージされる 条件 である必要があります。

特別とは異なる辞書キーは、Django ドキュメント https://docs.djangoproject.com/en/2.2/ref/models/lookups/ で説明されているように、ルックアップ式 として使用されます。特別なキーに似たフィールド名は禁止されているため、特別なキーとフィールド名を常に区別できます。

Django ルックアップ式は、フィールド名(リレーションを通じて続くフィールド名で拡張可能)、lowerreversed などのいくつかの変換、および exacticontainsgt などのルックアップで構成されます。フィールド名、変換、およびルックアップは、Django の標準ルックアップ式区切り文字である二重アンダースコアで区切られます。例:project__name__reversed__icontains

ルックアップ式に続く値は 検索値 です。これは単純な値である場合もあれば、対応するフィールドが JSON フィールドである場合は JSON 値である場合もあります。__in などの一部のルックアップ式は、検索値としてリストを想定しています。

文字列検索値は、コマーシャルアット @ で開始できます。このような値は、https://docs.djangoproject.com/en/2.2/ref/models/expressions/#django.db.models.F で F 式について説明されているように、フィールドへの参照を意味します。

検索値は None の場合があります。その場合、対応するルックアップ式は __isnull で拡張され、検索値は True になります。

例とより詳細なリファレンスはここにあります:QuerySet Filter

特定のフィールドのみを選択する (Choosing only certain fields)

さらに、使用するアプリケーションがオブジェクト全体を必要としない場合は、only_fields セレクターを使用して特定のフィールドのみを取得できます。

例 (Examples)

booking.user_accepted_offer_at が null でない予約のみを取得するにはどうすればよいですか?

Filtering bookings
/api/v2/booking/?user_accepted_offer_at__isnull=false&no_total_count=true
/api/v2/booking/?user_accepted_offer_at__isnull=false&no_total_count=true&only_fields=user_accepted_offer_at,id

指定された値(例:2025-09-23T04:26:22)より遅い開始日のサブスクリプションパスを取得するにはどうすればよいですか?

Filtering subscription passes
/api/v2/subscriptionpass?pass_start__gt=2025-09-23T04:26:22

作成時間でソートされた、特定の日付のシミュレーション結果のみを取得するにはどうすればよいですか?

Filtering simulations by date
/api/v2/simulation?project={{project_id}}&order_by=-created_at&start_time__date=2024-10-01

応答から特定のフィールドをフィルタリングするにはどうすればよいですか?次の例では、選択したフィールドのみが含まれますが、2番目のリクエストでは単一のフィールドが除外されます。

Filtering simulations by date
/api/v2/simulation?project={{project_id}}&only_fields=id,start_time,name
/api/v2/simulation?project={{project_id}}&exclude_fields=id