All ו-Get
חלק מהיחידה מודלים וממשק הניהול במסלול ה-Django של Coddy. שיעור 8 מתוך 23.
לפני שדף יכול להציג ספר, הקוד שלך צריך לקרוא אותו בחזרה. Book.objects.all() מחזירה QuerySet, אובייקט דמוי־רשימה שאפשר לעבור עליו באמצעות לולאה; כל פריט הוא Book שהשדות שלו הם מאפיינים. get() שולפת שורה אחת בדיוק:
for book in Book.objects.all():
print(book.author, book.year)
emma = Book.objects.get(title="Emma")
print(emma.year) # 1815get() מצפה להתאמה אחת. אם אין התאמה, נזרקת Book.DoesNotExist; אם יש כמה התאמות, נזרקת Book.MultipleObjectsReturned, ואפשר לתפוס את החריגות האלה כמו כל חריגה אחרת. שני ספרים כאן נכתבו בידי Jane Austen:
try:
Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
print("More than one")אם החריגה לא נתפסת, היא עוצרת את הסקריפט באותה שורה.
אתגר
קלכתבו מחדש את explore.py:
- הדפיסו את הכותרת של כל ספר, אחת בכל שורה.
- קבלו את
Duneוהדפיסו אתDune costsואת המחיר שלו:Dune costs 9.99. - חפשו את
Ulysses, שאינו נמצא על המדף, והדפיסוUlysses is not on the shelfבמקום שהתוכנית תקרוס.
לחצו על Run: המסוף יציג את תשע הכותרות ולאחר מכן את שני המשפטים.
נסו בעצמכם
from books.models import Book
# 1. הדפיסו את הכותרת של כל ספר, אחת בכל שורה.
# 2. מצאו את Dune והדפיסו את מחירו.
# 3. חפשו את Ulysses.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין