Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

下拉框搜索时,如果用首拼过滤?[已解决]



  • 在档案中添加了首拼字段,用于保存name的首拼。
    在tree视图中,已经可以通过首拼过滤查询结果;那么,如何在对应的下拉框中实现首拼过滤的功能呢?


  • 管理员

    override name_search方法, 加入对首拼字段的搜索。
    加首拼字段的解决方法不够自动化,应该可以对汉字解析其拼音然后做搜索。



  • @digitalsatori 非常感谢,已按您的指点完美实现该功能。我之所以添加一个字段来存储首拼,是为了提高查询效率。
    我目前还不会写基类,等我学会了,就不存在自动化的问题,直接继承即可
    关于继承,有2个问题:
    1.跨模块调用。
    2.如何在xml配置页面时,方便使用
    不过,这些问题在当前都还不重要,先学别的东西



  • @eric2017
    如何代码实现的,贴出来分享下:blossom:



  • @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()
    


  • @eric2017
    收到,谢谢,我也是新手,以后多多交流。


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待