django 搜索,其中数据库值等于搜索值的一部分
django search where database value is part equal to search value
value_in_database = 'Computer Solutions'
search_value = 'Solutions'
我知道如果我有像上面这样的值,我可以这样找到我的对象:
model.objects.filter(name__icontains=search_value)
但我想知道在 Django 中是否可以相反?
value_in_database = 'Solutions'
search_value = 'Computer Solutions'
model.objects.filter(name=search_value)
您可以试试这个解决方案,您将获得其名称中包含“计算机”或“解决方案”的所有模型:
import operator
from django.db.models import Q
from functools import reduce
search_value = 'Computer Solutions'
model.objects.filter(reduce(operator.or_, (Q(name__icontains=x) for x in search_value.split(" "))))
value_in_database = 'Computer Solutions'
search_value = 'Solutions'
我知道如果我有像上面这样的值,我可以这样找到我的对象:
model.objects.filter(name__icontains=search_value)
但我想知道在 Django 中是否可以相反?
value_in_database = 'Solutions'
search_value = 'Computer Solutions'
model.objects.filter(name=search_value)
您可以试试这个解决方案,您将获得其名称中包含“计算机”或“解决方案”的所有模型:
import operator
from django.db.models import Q
from functools import reduce
search_value = 'Computer Solutions'
model.objects.filter(reduce(operator.or_, (Q(name__icontains=x) for x in search_value.split(" "))))