تخطَّ إلى المحتوى

filter()

تصفية النتائج بشرط filter()

filter() تُرجع QuerySet جديدًا يحتوي فقط السجلات المطابقة للشرط الممرَّر.

الاستعلام الأشيع استخدامًا بـ Django ORM. لا يُنفَّذ فعليًا على قاعدة البيانات إلا عند الحاجة الفعلية للنتائج (كسول/lazy) — يمكن سلسلة عدة filter() ببعضها قبل التنفيذ الفعلي.

الصياغة

Model.objects.filter(field=value)
Model.objects.filter(field__gt=value)

📄 مثال

# كل المنشورات المنشورة
Post.objects.filter(status="published")

# مقارنات: __gt __lt __gte __lte __contains __icontains
Post.objects.filter(views__gt=100)
Post.objects.filter(title__icontains="جافاسكريبت")

أهم المعاملات

المعاملالوظيفة
field=valueتساوي تام
field__gt / __ltأكبر من / أصغر من
field__contains / __icontainsيحتوي نصًا (الثاني غير حسّاس لحالة الأحرف)

💡 نصائح عملية

  • سلسلة عدة filter() ببعضها تُترجَم لجملة SQL واحدة فعّالة، لا استعلامات منفصلة

⚠️ أخطاء شائعة

  • الظن أن filter() ينفّذ استعلام قاعدة البيانات فورًا — التنفيذ الفعلي يحدث فقط عند التكرار (for) أو التحويل لقائمة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.