【发布时间】:2014-04-09 18:34:38
【问题描述】:
我正在尝试准备搜索表单,用户可以在其中输入 1、2 或所有(在本例中为 3 个)搜索过滤器。
假设搜索过滤器是: 姓氏、电话和地址。我正在尝试通过以下方式过滤查询集:
if filterForm.is_valid():
last_name = filterForm.cleaned_data.get('last_name')
phone= filterForm.cleaned_data.get('phone')
address = filterForm.cleaned_data.get('address')
if last_name is None and phone is None and address is None:
pass
#we dont do search id db
else:
clients = Client.objects.filter(Q(last_name__contains=last_name) | Q(phone=phone) | Q(address__contains=address))
每个搜索键都可以为空。
不幸的是,它返回的结果比预期的要多。当我输入搜索过滤器“示例”作为姓氏字段时,它会返回具有此姓氏的所有字段+许多其他行。
知道如何解决这个搜索问题吗?
【问题讨论】:
标签: django django-models django-queryset django-orm