Django Academy · درس

‏order_by والتقطيع والتقييم الكسول

رتّب وحدّد النتائج وافهم متى تصل الاستعلامات إلى قاعدة البيانات

الدرس 3 من 413 خطوة

‏order_by والتقطيع والتقييم الكسول درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.

ترتيب الصفوف

لا تملك صفوف قاعدة البيانات ترتيبًا مضمونًا. استدعِ order_by() لفرز QuerySet حسب أي حقل تختاره.

Book.objects.order_by("title")

الفرز تنازليًا

ضع علامة ناقص أمام اسم الحقل لعكس الترتيب، بحيث تأتي القيمة الأكبر أو الأحدث أولًا.

Book.objects.order_by("-year")

الفرز حسب عدة حقول

مرّر عدة حقول إلى order_by()، وسيُرتّب Django حسب الحقل الأول، ثم يحسم حالات التساوي باستخدام الحقل التالي.

Book.objects.order_by("author", "-year")

أخذ أول بضعة عناصر

يحدّ التقطيع باستخدام صيغة Python من عدد الصفوف التي تجلبها من QuerySet، وهو مثالي لإنشاء قائمة بأفضل خمسة عناصر.

Book.objects.order_by("-year")[:5]

تقطيع نافذة

حدّد بداية ونهاية للتقطيع للحصول على جزء متوسط. يحوّل Django ذلك إلى LIMIT وOFFSET نيابةً عنك. ✂️

Book.objects.all()[10:20]

لا يوجد تقطيع سالب

لا يمكنك استخدام فهرس سالب مع QuerySet. للحصول على الصفوف الأخيرة، اعكس الترتيب أولًا ثم اقطع النتائج.

Book.objects.order_by("-id")[:1]

الاستعلامات كسولة

لا يؤدي إنشاء QuerySet إلى الوصول إلى قاعدة البيانات. يظل Django كسولًا وينتظر حتى تحتاج إلى البيانات فعلًا.

qs = Book.objects.filter(published=True)

ما الذي يشغّل الاستعلام

يحدث التقييم عند التكرار، أو استدعاء list()، أو التحقق من الطول. عندها فقط يُنفّذ SQL أخيرًا.

for book in qs:
    print(book.title)

أنشئ الآن ونفّذ لاحقًا

تتيح لك الكسالة تسلسل عوامل التصفية عبر عدة أسطر، ومع ذلك يرسل Django استعلامًا واحدًا مدمجًا في النهاية.

qs = Book.objects.filter(year__gte=2020).order_by("title")

تخزين النتائج مؤقتًا

بعد تقييم QuerySet، يخزّن Django الصفوف مؤقتًا. يؤدي إعادة استخدام المتغير نفسه إلى تجنّب الوصول إلى قاعدة البيانات مرتين.

يبقى التقطيع كسولًا

يظل التقطيع غير المُقيّم كسولًا، لذلك تُضاف LIMIT إلى SQL بدلًا من تقليص الصفوف في Python.

top = Book.objects.order_by("-year")[:3]

تحقق سريع

أنشأت QuerySet مع تصفية، لكنك لم تكرّر عليه ولم تحوّله إلى قائمة. متى يُنفّذ SQL؟

مراجعة

لقد نجحت! يرتّب order_by() النتائج، ويحدّ التقطيع الصفوف في SQL، ويعني التقييم الكسول أن الاستعلامات لا تُنفّذ إلا عند استخدامها. ⚡

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «‏order_by والتقطيع والتقييم الكسول» مجاني؟

نعم — نص درس «‏order_by والتقطيع والتقييم الكسول» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏order_by والتقطيع والتقييم الكسول»؟

رتّب وحدّد النتائج وافهم متى تصل الاستعلامات إلى قاعدة البيانات تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟

لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «‏order_by والتقطيع والتقييم الكسول»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟

نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏all() وget() وfilter()
  2. عمليات البحث في الحقول وexclude()
  3. ‏order_by والتقطيع والتقييم الكسول
  4. ‏values وvalues_list وcount
← العودة إلى Django Academy