下拉框搜索时,如果用首拼过滤?[已解决]
-
override
name_search
方法, 加入对首拼字段的搜索。
加首拼字段的解决方法不够自动化,应该可以对汉字解析其拼音然后做搜索。 -
@digitalsatori 非常感谢,已按您的指点完美实现该功能。我之所以添加一个字段来存储首拼,是为了提高查询效率。
我目前还不会写基类,等我学会了,就不存在自动化的问题,直接继承即可
关于继承,有2个问题:
1.跨模块调用。
2.如何在xml配置页面时,方便使用
不过,这些问题在当前都还不重要,先学别的东西 -
@1234567 假设档案类类名为A,名称字段为name,首拼字段为spell。算法如下:
1.写设置首拼的代码
获取汉字首拼的代码,参见:http://www.jb51.net/article/68715.htm
将里面的方法,写到utils.py文件中,然后添加方法:def set_spell(values): if values.has_key('name'): values['spell'] = multi_get_letter(values['name'])
2.在A中,重写write、create方法,并添加计算首拼的代码。例如:
@api.model def create(self, values): utils.set_spell(values) return super(A, self).create(values)
3.为在其他地方使用该档案A的下拉框,添加对搜索的支持。在A中继续添加代码:
@api.model def name_search(self, name='', args=None, operator='ilike', limit=100): args = args or [] domain = ['|', ('spell', operator, name), ('name', operator, name)] recs = self.search(domain + args, limit=limit) return recs.name_get()