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

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

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 【求学】关于selection字段动态填充选项

【求学】关于selection字段动态填充选项

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
8 帖子 5 发布者 1.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zerone40
    写于 最后由 编辑
    #1

    大家好,请教一下关于Selection字段动态填充选项的问题。
    描述:
    我有一个文件,从文件读取了两个列表List_A和List_B。
    视图中有两个Selection类型字段Slct_A 和Slct_B。
    Slct_A 有两个选项 [('La','La'),('Lb','Lb')]
    Slct_B 最初没有选项,根据Slct_A的选择,给Slct_A动态增加值(List_A和List_B)。
    可以实现吗?昨天弄了一下午了,好像没这么玩的。
    PS:只有一个文件可让我用,用不了domain,onchange貌似也不行,报错list no get attribute

    1 条回复 最后回复
    0
    • L 离线
      L 离线
      l732893879
      写于 最后由 编辑
      #2

      用many2one做吧

      Z 1 条回复 最后回复
      0
      • Z 离线
        Z 离线
        zerone40
        在 回复了 l732893879 最后由 编辑
        #3

        @l732893879 你好,我的数据诗词用文本中获取的,不能用M2O吧

        1 条回复 最后回复
        0
        • G 离线
          G 离线
          guwenfengvip163.com
          写于 最后由 编辑
          #4

          采用计算字段试试,

          1 条回复 最后回复
          0
          • H 离线
            H 离线
            handen
            写于 最后由 编辑
            #5

            你可以在.py文件里面写一个方法,动态的修改select的值

            Z 1 条回复 最后回复
            0
            • Z 离线
              Z 离线
              zerone40
              在 回复了 handen 最后由 编辑
              #6

              @handen 试过各种办法,包括您说的这种,没有效果。可能是我写方式有问题。如果您有空闲时间,可以贴一下代码

              1 条回复 最后回复
              0
              • F 离线
                F 离线
                franciewang
                写于 最后由 编辑
                #7

                个人认为,利用many2one或者many2many类型的控件 应该可以解决这个问题(List_A和Slct_B要单独声明一个类)。
                ____________________________________________________________________________________________

                1、声明两个类 Slct_A 和 Slct_B(继承models.Model)。
                2、List_A和List_B的值 你可以获取到,然后把获取的值,插入到Slct_B的模型里,这样Slct_B控件就可以进行选择。
                3、在要用到Slct_A 和 Slct_B这两个字段的模型(target_model)中,添加字段以及显示控件。

                    py:
                    slct_a = fields.Many2one(comodel_name='slct_a',string=u'下拉控件A')
                    slct_b = fields.Many2many(comodel_name='slct_b',relation='model_name_slct_b',string=u'下拉控件B')
                    xml:
                    <field name="slct_B" widget="many2many_tags"/>
                

                4、在target_model,定义 Slct_B 字段的 onchange 方法,Slct_B 控件发生变化,清空 Slct_A 模型中的所有数据,然后再根据 Slct_B 控件的值,插入对应数据。

                  @api.onchange('slct_b')
                  _onchange_for_slct_b (self):
                    value_of_slct_b = self.slct_b 
                    if value_of_slct_b :
                         # step1:清空 Slct_A 模型中的所有数据,可以用原生sql。
                         # step2:根据value_of_slct_b向Slct_A插入相应值。
                

                我觉得上面的思路可以说得通,但我没写代码,你可以验证一下,不过,如果操作很频繁对数据库可能会有一定的压力。希望对你有帮助。

                Z 1 条回复 最后回复
                0
                • Z 离线
                  Z 离线
                  zerone40
                  在 回复了 franciewang 最后由 编辑
                  #8

                  @guwenfengvip163-com 感谢,我去验证一下

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

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