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) # 1815تتوقع get() تطابقًا واحدًا. يؤدي عدم وجود أي تطابق إلى رفع Book.DoesNotExist، بينما يؤدي وجود عدة تطابقات إلى رفع Book.MultipleObjectsReturned، ويمكنك التقاط هذه الاستثناءات كما تلتقط أي استثناء آخر. هناك كتابان هنا من تأليف جين أوستن:
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.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django