التحديث والحذف
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 12 من 23.
تتغير الأسعار وتغادر الكتب الرفوف. لتغيير كتاب واحد، عيّن سِمته واستدعِ save()؛ فبدون save()، يحتفظ الجدول بالقيمة القديمة. لتغيير عدة صفوف دفعةً واحدة، استدعِ update() على مجموعة استعلامات. ينفّذ استعلام UPDATE واحدًا ويُعيد عدد الصفوف التي تغيّرت. تعمل delete() بالطريقة نفسها وتُعيد عدد الصفوف التي حُذفت، إجمالًا ولكل نموذج:
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})تؤثر الطريقتان في صفوف مجموعة الاستعلامات نفسها بالضبط، لذا طبّق التصفية أولًا. تضع Book.objects.update(is_read=True) علامة على كل كتاب، ولا تطلب أيٌّ من الطريقتين تأكيدًا قبل التنفيذ.
التحدي
سهلفي explore.py، فوق آخر print:
- كتاب
Duneمعروض للبيع: عيّن سعره إلى7.99. - علّم كل كتاب من تأليف
Jane Austenبأنه مقروء، في استعلام واحد. - احذف كل كتب الغموض، في استعلام واحد.
اضغط على Run. تعرض وحدة التحكم 7 books on the shelf، وتُظهر علامة التبويب Data كتاب Dune بسعر 7.99، ولا تعرض أي كتب غموض.
جرّب بنفسك
from books.models import Book
# 1. كتاب Dune معروض للبيع بسعر مخفّض: اضبط سعره على 7.99.
# 2. ضع علامة «مقروء» على كل كتاب من تأليف Jane Austen.
# 3. تبرّع بكل كتاب من كتب الغموض.
print(Book.objects.count(), "books on the shelf")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django