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