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 الكامل بالعربي.