سؤال

أنا استخدم 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top