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 אונליין