我是一个大海捞针搜索模型,并且搜索引擎在下面的模型上运行良好:
class Business(models.Model):
name = models.CharField(max_length=64)
address = models.CharField(max_length=64, blank=True, null=True)
district = models.CharField(max_length=32, blank=True, null=True)
city = models.CharField(max_length=32, blank=True, null=True)
phone = models.CharField(max_length=32, blank=True, null=True)
category = models.ManyToManyField(Category)
picture = models.ImageField(upload_to='business_image', blank=True, null=True)
slug = models.SlugField(unique=True)
pub_date = models.DateField(blank=True, auto_now_add=True)
position = GeopositionField(blank=True, null=True)
# default="35.80,51.43"
MY_CHOICES = (('$', '$'),
('$$', '$$'),
('$$$', '$$$'),
('$$$$', '$$$$'),)
price = models.CharField(max_length=4, choices=MY_CHOICES, blank=True, null=True)
def save(self, *args, **kwargs):
self.slug = slugify(unidecode.unidecode(self.name)) + '-' + str(self.id)
super(Business, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
这是我的views.py:
def search1(request, page):
search_term = request.GET['q']
print search_term
form = ItemSearchForm(request.GET)
results = form.search(request)
results = SearchQuerySet().filter(name=search_term)
# results = Business.objects.filter(name__icontains=search_term)
print results
n = 10
# search_res = results['items']
search_res = results
temp = []
for i in search_res:
temp.append(i)
paginator = Paginator(temp, n)
try:
search_result = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
search_result = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
search_result = paginator.page(paginator.num_pages)
# Range of all pages
page_range = paginator.page_range
# Number of our page
page = int(page)
# Range of showing pages
if page <= 5:
pages_show = range(1, min(len(page_range), 10) + 1)
elif page >= len(page_range) - 5:
pages_show = range(len(page_range) - 9, len(page_range) + 1)
else:
pages_show = range(page - 5, page + 5)
return render(request, 'search/search.html', {
'search_result': search_result, 'pages_num': page_range, 'page': int(page),
'term': search_term, 'n': n, 'pages_show': pages_show
})
这是search_indexes.py:
class BusinessIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(model_attr='name', document=True, use_template=True)
def get_model(self):
return Business
这是business_text.txt
{{ object.name }}
{{object.address}}
这是我的模板输入:
<input type="search" id="id_q" name="q" placeholder="business" >
现在我想搜索两个输入字段,一个用于业务名称,另一个用于同时显示业务地址。在我的模板中有这样的东西:
<input type="search" id="id_q" name="q1" placeholder="name" >
<input type="search" id="id_q" name="q2" placeholder="address" >
我不明白在阅读文档时我该怎么做。如果你能帮助我实现后端继续这个,我将不胜感激。