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

السؤال

نشر

أريد الحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين معًا، لكن لا أعلم كيفية القيام بهذا الأمر، يمكنني أن أقوم بتنفيذ جملة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...