مرشحات جانغو مخصص مجموعة طلبات البحث
-
21-08-2019 - |
سؤال
هل هناك، في جانغو، طريقة قياسية لكتابة معقدة، والمرشحات المخصصة لمجموعات طلبات البحث؟
وكما أستطيع أن أكتب
MyClass.objects.all().filter(field=val)
وأود أن تفعل شيئا مثل هذا:
MyClass.objects.all().filter(customFilter)
ويمكنني أن استخدام تعبير مولد
(x for x in MyClass.objects.all() if customFilter(x))
ولكن من شأنه أن يفقد chainability ومهما كانت وظائف أخرى توفير مجموعات طلبات البحث.
المحلول
وأعتقد أنك قد تحتاج مخصصة مديري أ >.
نصائح أخرى
والتوصية للبدء في استخدام أساليب مدير هو فكرة جيدة، ولكن للإجابة على سؤالك بشكل مباشر: نعم، استخدم <لأ href = "http://docs.djangoproject.com/en/dev/topics/db/queries / # المعقدة عمليات البحث مع-ف-الأجسام "يختلط =" noreferrer "> Q الكائنات . على سبيل المثال:
from django.db.models import Q
complexQuery = Q(name__startswith='Xa') | ~Q(birthdate__year=2000)
MyModel.objects.filter(complexQuery)
التحف Q يمكن الجمع بين | (OR)، و(AND)، و~ (NOT).
لا تنتمي إلى StackOverflow