Python 为什么“质疑”;“绿湾”;“不工作时”;“绿色”;或;海湾;在我的Django看来是吗?
以下是我的看法:Python 为什么“质疑”;“绿湾”;“不工作时”;“绿色”;或;海湾;在我的Django看来是吗?,python,django,python-3.x,django-models,django-views,Python,Django,Python 3.x,Django Models,Django Views,以下是我的看法: def search(request): if request.method == 'GET': try: q = request.GET.get('search_box', None) s_or_l = request.GET.get('s_or_l', None) p_class = request.GET.get('p_class', None) if
def search(request):
if request.method == 'GET':
try:
q = request.GET.get('search_box', None)
s_or_l = request.GET.get('s_or_l', None)
p_class = request.GET.get('p_class', None)
if p_class:
posts = Listing.objects.filter(title__contains=q, is_live=1, sale_or_lease=s_or_l,
property_class=p_class) | \
Listing.objects.filter(street_address__contains=q, is_live=1, sale_or_lease=s_or_l,
property_class=p_class) | \
Listing.objects.filter(city__contains=q, is_live=1, sale_or_lease=s_or_l,
property_class=p_class) | \
Listing.objects.filter(state__contains=q, is_live=1, sale_or_lease=s_or_l,
property_class=p_class)
else:
posts = Listing.objects.filter(title__contains=q, is_live=1, sale_or_lease=s_or_l) | \
Listing.objects.filter(street_address__contains=q, is_live=1, sale_or_lease=s_or_l) | \
Listing.objects.filter(city__contains=q, is_live=1, sale_or_lease=s_or_l) | \
Listing.objects.filter(state__contains=q, is_live=1, sale_or_lease=s_or_l)
return render(request, 'search/results.html', {'posts': posts, 'q': q})
except KeyError:
return redirect('home')
对于城市
设置为“绿湾”的酒店,以下搜索按预期进行:
绿色
bay
绿湾
但是
green-bay
使用icontains
而不是contains
进行不区分大小写的搜索
Listing.objects.filter(city__icontains=q, is_live=1, sale_or_lease=s_or_l)
至于为什么green
或bay
或green-bay
有效,而不是green-bay
,我认为单独的green
和bay
用小写字母出现在你的头衔或街道地址中
除非您使用icontains