מיון רשומות
חלק מהיחידה מודלים וממשק הניהול במסלול ה-Django של Coddy. שיעור 11 מתוך 23.
מציאת הספר הזול ביותר, הספר החדש ביותר או כל הכותרים מהישן ביותר לחדש ביותר — כל אלה דורשים קודם למיין את הספרים. order_by() ממיינת QuerySet אחד לפי שדה, כפי ש־ordering בתוך Meta עושה עבור כולם, וסימן מינוס ממיין מהערך הגבוה לנמוך. first() מחזירה את השורה הראשונה, או None כשאין כזו, ולכן בניגוד ל־get() היא לעולם לא מעלה חריגה:
Book.objects.order_by("-year").first() # <Book: SPQR by Mary Beard>
Book.objects.order_by("-price").values_list("author", flat=True)
# <QuerySet ['Mary Beard', 'Umberto Eco', ...]>values_list("author", flat=True) מדלגת על אובייקטי Book ומחזירה את הערכים עצמם: 'Mary Beard'. בלי flat=True, כל ערך מגיע בתוך טאפל עם איבר אחד: ('Mary Beard',).
אתגר
בינונישכתוב את explore.py כך שידפיס שתי שורות:
Cheapest:ואת הכותרת של הספר הזול ביותר.Titles by year:ורשימה של כל הכותרות, מהספר הישן ביותר ועד החדש ביותר. הדפס את הרשימה עצמה.
לחץ על ״שחק״: במסוף מופיע Cheapest: Pride and Prejudice, ולאחר מכן Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].
נסו בעצמכם
from books.models import Book
# 1. הזול ביותר: שם הספר הזול ביותר
# 2. שמות הספרים לפי שנה: כל שמות הספרים, מהספר הישן ביותר, כרשימה
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין