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، ويمكنك التعامل معهما كما تتعامل مع أي استثناء. اثنان من الكتب هنا من تأليف 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بدلًا من حدوث عطل.
اضغط على «العب»: تعرض وحدة التحكم العناوين التسعة، ثم الجملتين.
جرّب بنفسك
from books.models import Book
# 1. اطبع عنوان كل كتاب، عنوانًا واحدًا في كل سطر.
# 2. احصل على Dune واطبع سعره.
# 3. ابحث عن Ulysses.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django