使用标签列表过滤CharField的首选方法是什么? 在数据库中,我有这样的东西:
体裁=“某物,苹果,something_else,something_else2,橙,葡萄,等等。”
我尝试使用__in
运算符什么也没出现
elem = list(Elements.objects.filter(genres__in=['apple','orange','grape']))
答案 0 :(得分:1)
您可以尝试此查询
elem = list(Elements.objects.filter(Q(genres__icontains="apple") | Q(genres__icontains="orange") | Q(genres__icontains="grape")))
但是我认为对于标签来说,这是一个更好的解决方案Django Filtering A Blog Based on Tags
答案 1 :(得分:0)
我能够做到以下几点:
from django.db.models import Q
from functools import reduce
from operator import and_
tag_list = ['apple', 'orange', 'grape']
query = reduce(and_, (Q(genres__icontains=tag) for tag in tag_list))
elem = list(Elements.objects.filter(query))
您还可以使用or_
运算符,请参见:
答案 2 :(得分:-1)
您可能想使用Q查找。 https://docs.djangoproject.com/en/2.1/topics/db/queries/#complex-lookups-with-q-objects
from django.db.models import Q
elem = Elements.objects.filter(Q(genres__icontains="apple") | Q(genres__icontains="orange") | Q(genres__icontains="grapes"))