كيف يمكنني تمرير قائمة كيو إس لتصفية OR عمليات البحث؟
-
21-08-2019 - |
سؤال
وكيف أمرر قائمة كيو إس لتصفية OR عمليات البحث؟ شيء من هذا القبيل:
q_list = [Q(xyz__isnull=True), Q(x__startswith='x')]?
وبدون لائحة أود أن تفعل:
Model.objects.filter(Q(xyz__isnull=True) | Q(x__startswith='x'))
المحلول
واستخدام الثعبان في الحد () وظيفة:
import operator
reduced_q = reduce(operator.or_, q_list)
Model.objects.filter(reduced_q)
نصائح أخرى
ويكون الأجسام Q أيضا وسيلة add
التي تأخذ كائن آخر Q وموصل Q (إما AND أو OR).
q_object = Q(xyz__isnull=True)
q_object.add(Q(x__startswith='x'), Q.OR)
ولقد وجدت أن يكون مفيدا عند بناء أو الفلاتر ولقد كتبت سبيل المثال أطول على بلدي بلوق: <لأ href = "http://bradmontgomery.blogspot.com/2009/06/adding-q- الكائنات في django.html "يختلط =" noreferrer ">" إضافة "الأجسام Q في جانغو
لا تنتمي إلى StackOverflow