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

filter expression構成フィールドまたはvehicle_labelフィールド内のオブジェクトのフィルタリング

SWAT APIモデル内では、一部のオブジェクトは、処理パイプライン内の「フィルター式」を介した柔軟なユーザー定義のフィルタリングをサポートしています。例としては、プロセッサ車両ラベルがあります。これらのフィルタリング式により、QuerySetフィルターと同様の構文を使用して、処理にオブジェクトを選択的に含めることができます。たとえば、処理にソフト削除された予約を含めるには、プロセス中に予約フィルター式を適用できます。

{
"and": [
{
"pk__in": [
<some_booking_id_list>
]
},
{
"is_invalidated__exact": true
}
]
}

ほとんどのオブジェクトフィールドは、このフィルタリングアプローチを適用するために使用できます。

vehicle_labelsフィールドでのフィルターの使用

同じアプローチを適用して、vehiclesbookings、およびnodes間のラベルの照合プロセスを管理できます。

予約オブジェクトbooking.vehicle_labelsフィールドには、注文の配送対象となる車両の車両ラベルが一覧表示されます。次の例では、このvehicle_labelsフィールドで注文を最適化すると、T01、T02、またはT03ラベルを持つ車両のみがこれらの注文を履行するために使用されるようになります。

"vehicle_labels": {
"or": [
"T01",
"T02",
"T03"
]
}

この機能は、フリートと注文に対して確立されたルールで柔軟なグループ化が必要な場合に役立ちます。

または別の例として、

{"and": 
[{"or": ["2", "3"]}, {"not": {"and": ["4", "5"]}}]
}

関係の活用

フィルタリング式は、__構文を使用して設定できるオブジェクト間の関係をサポートしています。たとえば、次のbooking_filter_expressionでは、prepared状態にある予約と、N10コードを含むlocations_groupsに属するoperations_locationsが設定されている予約を選択できます。これは、1対多と多対多の両方の関係をサポートするネストされたルックアップを実行する効果的な方法です。

{
"state__in": [
"prepared"
],
"pickup_operations_location__group__code__in": [
"N10"
]
}