Django __in surleccase
-
29-09-2019 - |
سؤال
أنا استخدم Django-taggit, ، الذي يتعامل مع مرفق العلامات لأنواع المحتوى التعسفي. لقد استوردت قائمة علامات كبيرة ، والتي تحتوي على العديد من الكلمات الكبيرة ، وكذلك الكلمات الصغيرة.
الآن ، أحاول الحصول على كائنات من فئة أخرى تحتوي على مجموعة من العلامات ، لكنني أريد مقارنة الحالة بشكل غير واضح. عندما أفعل هذا:
Media.objects.filter(tags__name__in=['tag1', 'tag2'])
لم يتم العثور على الكائنات التي تحتوي على مثل العلامة "TAG1" ، فقط تلك التي تحتوي على "TAG1" أو "TAG2".
هل هناك أي احتمال في Django orm لفعل شيء مثل:
Media.objects.filter(tags__name__iin=['tag1', 'tag2'])
هذا يتصرف مثل "icontains"؟
المحلول
لا توجد طريقة سهلة للقيام بذلك. لست متأكدًا بنسبة 100 ٪ ، يمكنك تجربة شيء مثل هذا لمشكلتك.
from django.models import Q
q = Q()
for tag in tags.split():
q |= Q(tags__name__iexact=tag)
Media.objects.filter(q)
لا تنتمي إلى StackOverflow