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