我是一名Django新手,正在尝试使用MySql和MyISAM引擎为我的项目创建一个“搜索”表单。到目前为止,我设法让表单工作,但是Django似乎无法以相同的方式搜索所有字段。结果是随机的。例如:在
以下是我的模型:
这是我的看法:
有线索吗?
region
中搜索不返回任何结果,而在description
中搜索正常工作,而howtogetin
似乎不适用。以下是我的模型:
class Camp(models.Model):
owner = models.OneToOneField(User)
name = models.CharField(max_length=100)
description = models.TextField()
address1 = models.CharField(max_length=128)
address2 = models.CharField(max_length=128)
zipcode = models.CharField(max_length=128)
region = models.CharField(max_length=128)
country = models.CharField(max_length=128)
phone = models.CharField(max_length=60)
howtogetin = models.TextField()
def __str__(self):
return self.name
这是我的看法:
def campsearch(request):
if request.method == 'POST':
form = CampSearchForm(request.POST)
if form.is_valid():
terms = form.cleaned_data['search']
camps = Camp.objects.filter(
Q(name__search=terms)|
Q(description__search=terms)|
Q(address1__search=terms)|
Q(address2__search=terms)|
Q(zipcode__search=terms)|
Q(region__search=terms)|
Q(country__search=terms)|
Q(howtogetin__search=terms)
)
return render(request, 'campsearch.html', {'form':form, 'camps':camps})
else:
form = CampSearchForm()
return render(request, 'campsearch.html', {'form':form})
有线索吗?
normalize_query
(之前它返回的是“withquotes”而不是“with quotes”字符串(请参见docstring)。 - WTKnormalize_query
函数中使用标准库shlex
模块:[' '.join(q.split()) for q in shlex.split(query_string)]
。 - Dustin Wyatt