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

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

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

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

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



  • 大家好,请教一下关于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



  • 用many2one做吧



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



  • 采用计算字段试试,



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



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



  • 个人认为,利用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插入相应值。
    

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



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


Log in to reply