あなたが尋ねていることは少し不明ですが、一般的にDjangoのフィルタは非常に強力であるため、これを使用することをお勧めします。
のは、ユーザーが何らかの形でページに自分の家のためのオプションを選択して、あなたはあなたが任意の「IFS」を必要としないでしょう
number_of_rooms = request.GET.get('number_of_rooms', 0)
area = request.GET.get('area', 0)
との情報を得ているとしましょう、しかしむしろ1簡潔なフィルタクエリ:
matching_house = Houses.objects.filter(number_of_rooms__gte=number_of_rooms, area__gte=area)
これは、少なくとも、ユーザーが望む部屋の数と少なくとも同じ面積のすべての家を返します。
また、ユーザーが部屋やエリアの数の範囲を入力する可能性があります:
min_number_of_rooms = request.GET.get('min_number_of_rooms', 0)
max_number_of_rooms = request.GET.get('max_number_of_rooms', 0)
min_area = request.GET.get('min_area', 0)
max_area = request.GET.get('max_area', 0)
そして、ちょうどそれに応じてフィルタ条件を拡張:
matching_house = Houses.objects.filter(number_of_rooms__gte=min_number_of_rooms, number_of_rooms__lte=max_number_of_rooms, area__gte=min_area, area__lte=max_area)
など
あなたはそれについてさらに準備することができますDjango QuerySet API Reference
なぜこれを行うべきかOPが理解できるように少しお教えください。 – Surt
@Surt Basicフィルタは、&演算子の組み合わせに基づいてクエリーセットを返します。 Qオブジェクトは、&と|を使用して結合に基づいてクエリーセットを返すことができます。演算子。 –
@IbrahimKあなたの答えに 'Q'オブジェクトに関する説明を追加してください。 OPがあなたの答えを理解するのに役立ちます。特定の時点で特定のリンクが変更されると、他の人を助けることはありません。 – arulmr