Elemente aus dem Abfragesatz in absteigender Reihenfolge in Django filtern

Salman Mehmood 20 Juni 2023
Elemente aus dem Abfragesatz in absteigender Reihenfolge in Django filtern

In diesem Tutorial erfahren wir, wie Sie die Elemente des Abfragesatzes in absteigender Reihenfolge mit der Methode order_by() in Django herausfiltern.

Verwenden Sie die order_by()-Methode, um Elemente aus dem Abfragesatz mit absteigender Reihenfolge in Django zu filtern

Die Methode order_by() ordnet Ihre Ergebnisse. Die Standardreihenfolge war die Reihenfolge, als wir sie in die Datenbank eingefügt haben.

Lassen Sie uns sehen, wie es aussieht, um die Standardreihenfolge zu erhalten. Lassen Sie uns zuerst alle Objekte abrufen.

simple.objects.all()

Ausgang:

<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<apple.com>]>

Wir würden order_by() verwenden, wenn wir eine andere Reihenfolge wünschen. Anstelle von all() können wir order_by() verwenden.

Es wird auf allen Ergebnissen operieren. Wenn wir davor einen Filter hätten, würde dieser zuerst laufen und dann das order_by().

Jetzt übergeben wir eine Zeichenfolge, um anzugeben, was bestellt werden soll. Filtern wir beispielsweise mit order_by("id"), erhalten wir dasselbe Ergebnis, weil es mit der kleinsten id beginnt und sich nach oben arbeitet.

Siehe Code unten.

simple.objects.order_by("id")

Ausgang:

<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<example.com>,<facebook.com>,<apple.com>]>

Wir verwenden ein - vor id, um es umzukehren, also beginnt es nicht mit der kleinsten, sondern mit der größten ID. Wenn wir es ausführen, sehen wir, dass www.apple.com das erste Element unseres Abfragesatzes ist.

simple.objects.order_by("-id")

Ausgang:

<QuerySet [<apple.com>,<facebook.com>,<example.com>,<www.example.com>,<simple:www.yahoo.com>,<Simple:www.example.com>]>

Wir können auch in den anderen Spalten order_by() verwenden.

Angenommen, wir haben die Spalte url. Wenn wir es nach der url bestellen, können wir den folgenden Code verwenden.

simple.objects.order_by("url")

Ausgang:

<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>

Da es sich um ein Zeichenfolgenfeld handelt, wird es alphabetisch geordnet. Wir können es in absteigender Reihenfolge filtern, indem wir einfach ein - voranstellen.

In unserem Abfragesatz erhalten wir als erstes Element www.yahoo.com.

simple.objects.order_by("-url")

Ausgang:

<QuerySet [<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<Simple:example.com>,<apple.com>]>

Normalerweise hätten wir mehrere order_by(), wenn möglicherweise zwei Spalten die genaue Reihenfolge haben könnten. Schauen wir uns die Spalte Nummer an, die zwei 10-Zahlen und einige andere Zahlen enthält.

simple.objects.order_by("number")

Ausgang:

<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>

Wir können sehen, dass apple.com an erster Stelle steht, weil die Zahl 2 auf dieselbe Zeile folgt.

Wir können eine weitere Option an order_by() anhängen, wenn wir eine strengere Reihenfolge erzwingen wollen. Zuerst bestellen wir nach der Nummer und dann nach der url.

simple.objects.order_by("number", "url")

Wenn wir die Ergebnisse einschränken wollen, sagen wir die ersten drei, können wir die folgende Syntax verwenden.

simple.objects.order_by("-id")[:3]

Ausgang:

<QuerySet [<apple.com>,<facebook.com>,<example.com>]>

Jetzt haben wir nur drei Elemente des Abfragesatzes in absteigender Reihenfolge.

Salman Mehmood avatar Salman Mehmood avatar

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