使用django-datatable-view时搜索整句被拆分为单词搜索如何解决?
修复步骤
导致搜索词自动拆分的核心原因是前端DataTable默认开启了智能搜索模式,会自动拆分空格分隔的关键词做独立检索,按以下步骤修改即可实现整句搜索:
1. 修改前端搜索调用参数
修改search方法的第三个参数为false,关闭智能搜索的自动分词逻辑:
const searchValue = 'new test' $(".datatable") .DataTable() .column(columnIndex) // 四个参数依次为:搜索词、是否启用正则、是否开启智能搜索、是否不区分大小写 .search(searchValue, true, false, false)
如果不需要正则搜索功能,也可以把第二个参数改为false,避免特殊符号导致的搜索异常。
2. 调整后端搜索匹配规则(按需选择)
你当前自定义的搜索方法是精确匹配整个字段值,如果你需要的是字段内容包含整个搜索短语而非完全相等,可以修改search方法的查询条件:
class StoresDatatable(Datatable): class CustomColumn(columns.DisplayColumn): def __init__(self, *args, **kwargs): self.field = kwargs.get('field', None) if self.field: kwargs.pop('field') super().__init__(*args, **kwargs) def search(self, model, term): # __icontains为不区分大小写包含匹配,需要区分大小写可替换为__contains return Q(**{ '%s__name__icontains' % self.field : term }) attr = CustomColumn( 'Attrs', 'count_attr', # data source field='attributes', processor="get_attributes", # 不需要正则的话可以改为False allow_regex=True )
内容的提问来源于stack exchange,提问作者Spirconi
相关产品推荐
相关产品推荐

