跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. 下拉框搜索时,如果用首拼过滤?[已解决]

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

已定时 已固定 已锁定 已移动 Odoo 新手求助
7 帖子 4 发布者 7.1k 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • E 离线
    E 离线
    eric2017
    发表于 最后由 eric2017 编辑
    #1

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

    1 条回复 最后回复
    0
    • D 离线
      D 离线
      digitalsatori
      管理员
      发表于 最后由 digitalsatori 编辑
      #2

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

      【上海先安科技】(tony AT openerp.cn)

      E 1 条回复 最后回复
      0
      • D digitalsatori

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

        E 离线
        E 离线
        eric2017
        发表于 最后由 编辑
        #3

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

        H 1 条回复 最后回复
        0
        • E eric2017

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

          H 离线
          H 离线
          hui
          发表于 最后由 编辑
          #4

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

          E 1 条回复 最后回复
          0
          • H hui

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

            E 离线
            E 离线
            eric2017
            发表于 最后由 编辑
            #5

            @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()
            
            H 1 条回复 最后回复
            0
            • E eric2017

              @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()
              
              H 离线
              H 离线
              hui
              发表于 最后由 编辑
              #6

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

              1 条回复 最后回复
              0
              • K 离线
                K 离线
                Kowky
                发表于 最后由 编辑
                #7
                此主題已被删除!
                1 条回复 最后回复
                0

                你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

                有了你的建议,这篇帖子会更精彩哦 💗

                注册 登录
                回复
                • 在新帖中回复
                登录后回复
                • 从旧到新
                • 从新到旧
                • 最多赞同


                • 登录

                • 没有帐号? 注册

                • 登录或注册以进行搜索。
                • 第一个帖子
                  最后一个帖子
                0
                • 版块
                • 标签
                • 热门
                • 用户
                • 群组