اذهب إلى المحتوى
  • 0

كيفية إستعمال "AND" في مرشح filter في جانغو Django؟

Mohssen A Mohssen

السؤال

أريد الحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين معًا، لكن لا أعلم كيفية القيام بهذا الأمر، يمكنني أن أقوم بتنفيذ جملة SQL بالشكل التالي للحصول على ما أريد تمامًا:

 

SELECT * FROM posts WHERE ((title like '%automation%') and (title like '%python%'));

لكن كيف أقوم بتحويل الإستعلام السابق إلى كود للحصول على QuerySet في جانغو Django؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك أيضًا إستعمال الكائن Q للقيام بالإستعلامات المتعددة الشروط على النحو التالي:

from django.db.models import Q

first_condition = Q(title__contains="automation")
second_condition = Q(title__contains="python")
posts = Post.objects.filter(first_condition & second_condition)

بهذا الشكل يمكنك عمل أي عدد من الشروط وربطها معًا من خلال المعامل & في التابع filter

أيضًا يمكنك إستخدام المعامل OR في لغة SQL بنفس الطريقة من خلال إستبدال المعامل & في المثال السابق بالمعامل | كالتالي:

from django.db.models import Q

first_condition = Q(title__contains="automation")
second_condition = Q(title__contains="python")
posts = Post.objects.filter(first_condition | second_condition)	# first_condition OR second_condition

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

للحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين معاً باستخدام جانغوُ ORM يُمكنك كتابة:

posts = Post.objects.filter(title__icontains="automation", title__icontains="python")

حيث: Post هو اسم النموذج (Model) الذي تستخدمه.

لاحظ أننا استعملنا العبارة icontains لتصفية الحقل title وهي تعمل نفس عمل LIKE في SQL.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك ربط التصفيات للحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين كما يلي:

posts = Posts.objects.filter(title__contains='automation').filter(title__contains='python')

اي اننا نقوم بالتصفية مرتين, المرة الاولى للحصول على المنشورات التي تحتوي على الكلمة automation بعد ذلك تصفية الناتج للحصول على المنشورات التي بها الكلمة python.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...