كيف يمكنني إنشاء مجموعة طلبات البحث يعادل جانغو إلى استعلام SQL باستخدام OR المشغل؟

StackOverflow https://stackoverflow.com/questions/827384

  •  05-07-2019
  •  | 
  •  

سؤال

في جانغو، وأنا أعلم باستخدام filter بحجج متعددة يحصل على ترجمتها إلى بنود SQL AND. من كتاب جانغو:

<اقتباس فقرة>   

ويمكنك تمرير الوسائط المتعددة في   فلتر () لتضييق الأشياء   أبعد من ذلك:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]
     

وهذه الحجج متعددة الحصول على   تترجم إلى SQL AND البنود. وهكذا،   على سبيل المثال في التعليمات البرمجية المتكررة   يترجم إلى ما يلي:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';

وكيف أقوم بإنشاء مجموعة طلبات البحث جانغو أن يحصل على ترجمتها إلى بنود SQL OR؟ على سبيل المثال:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE state_province = 'AZ'
OR state_province = 'CA'; 
هل كانت مفيدة؟

المحلول

وباستخدام مشغل Q متوفر في django.db.models

وIE:

from django.db.models import Q
Publisher.objects.filter(Q(state_province="CA") | Q(state_province="AZ"))

وإلقاء نظرة في مستندات هنا: <لأ href = "http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects" يختلط = " noreferrer "> http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top