作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始学习 Django,所以如果这对你来说是一个太新手的问题,请原谅我。
我有一个在 Django 中实现的搜索功能。我在 MySQL DB 全文索引中创建,然后在我的书模型中有一个字段:search_keywords
,我基本上存储了所有单词,包括书名和书的内容。然后我的搜索功能会做类似的事情:
search_keyword = self.request.GET.get('keywords')
if search_keyword:
# '*' is added for cases where user enters only part of the keyword
qs = qs.filter(keywords__search=search_keyword + '*')
qs = qs.filter(keywords__icontains=search_keyword)
最佳答案
不同之处在于要在数据库上执行的结果 SQL 查询...我个人更喜欢“__icontains”,因为所有数据库都支持,而“__search”仅适用于 mysql ( as django docs )(也支持 Django ≥ 1.10 中的 PostgreSQL — 见 documentation)。
查看每个方法的查询:
使用 __search
>>> str(Contact.objects.filter(first_name__search='john').query)
'SELECT `contact_contact`.`id`, `contact_contact`.`title`, `contact_contact`.`first_name`, `contact_contact`.`last_name`, `contact_contact`.`user_id`, `contact_contact`.`role_id`, `contact_contact`.`organization_id`, `contact_contact`.`dob`, `contact_contact`.`email`, `contact_contact`.`notes`, `contact_contact`.`create_date` FROM `contact_contact` WHERE MATCH (`contact_contact`.`first_name`) AGAINST (john IN BOOLEAN MODE)'
>>> str(Contact.objects.filter(first_name__icontains='john').query)
'SELECT `contact_contact`.`id`, `contact_contact`.`title`, `contact_contact`.`first_name`, `contact_contact`.`last_name`, `contact_contact`.`user_id`, `contact_contact`.`role_id`, `contact_contact`.`organization_id`, `contact_contact`.`dob`, `contact_contact`.`email`, `contact_contact`.`notes`, `contact_contact`.`create_date` FROM `contact_contact` WHERE `contact_contact`.`first_name` LIKE %john% '
关于django - Django 的 __search 与 __icontains 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799919/
请帮忙解决问题: class SearchResultView(TemplateView): template_name = "search_result.html" def get_
我最近开始学习 Django,所以如果这对你来说是一个太新手的问题,请原谅我。 我有一个在 Django 中实现的搜索功能。我在 MySQL DB 全文索引中创建,然后在我的书模型中有一个字段:sea
我是一名优秀的程序员,十分优秀!