Djangoで降順でクエリセットからアイテムをフィルタリングする
このチュートリアルでは、Django の order_by()
メソッドを使用して、クエリ セットのアイテムを降順で除外する方法を学習します。
order_by()
メソッドを使用して、Django で降順のクエリ セットから項目をフィルター処理する
order_by()
メソッドは結果を並べ替えます。 デフォルトの順序は、データベースに挿入したときの順序です。
デフォルトの順序を取得するとどうなるか見てみましょう。 まず、すべてのオブジェクトを取得しましょう。
simple.objects.all()
出力:
<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<apple.com>]>
別の順序が必要な場合は、order_by()
を使用します。 all()
の代わりに order_by()
を使用できます。
すべての結果に作用します。 この前にフィルターがあれば、それが最初に実行され、次に order_by()
が実行されます。
次に、何を注文するかを指定する文字列を渡します。 たとえば、order_by("id")
でフィルタリングすると、最小の id
から開始して上に向かっていくため、同じ結果が得られます。
以下のコードを参照してください。
simple.objects.order_by("id")
出力:
<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<example.com>,<facebook.com>,<apple.com>]>
id
の前に -
を使用して逆にするので、最小の ID から始めるのではなく、最大の ID から始めます。 実行すると、www.apple.com
がクエリ セットの最初の項目であることがわかります。
simple.objects.order_by("-id")
出力:
<QuerySet [<apple.com>,<facebook.com>,<example.com>,<www.example.com>,<simple:www.yahoo.com>,<Simple:www.example.com>]>
他の列で order_by()
を使用することもできます。
url
列があるとします。 url
で並べ替える場合は、次のコードを使用できます。
simple.objects.order_by("url")
出力:
<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>
これは文字列フィールドなので、アルファベット順に並べられます。 -
を前に置くだけで降順でフィルタリングできます。
クエリ セットでは、最初の項目 www.yahoo.com
を取得します。
simple.objects.order_by("-url")
出力:
<QuerySet [<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<Simple:example.com>,<apple.com>]>
通常、2つの列が正確な順序を持つ可能性がある場合、複数の order_by()
を使用します。 2つの 10
数字といくつかの異なる数字を持つ number
列を見てみましょう。
simple.objects.order_by("number")
出力:
<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>
番号が2
であるため、apple.com
が最初であることがわかります。同じ行が続きます。
より厳密な順序付けを強制したい場合は、order_by()
に別のオプションを追加できます。 最初に number
で並べ替え、次に url
で並べ替えます。
simple.objects.order_by("number", "url")
結果を制限したい場合 (最初の 3つなど)、次の構文を使用できます。
simple.objects.order_by("-id")[:3]
出力:
<QuerySet [<apple.com>,<facebook.com>,<example.com>]>
これで、降順で設定されたクエリの項目が 3つだけになりました。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn