使用外部模型的域 - Odoo 9

时间:2017-04-17 15:25:52

标签: python openerp odoo-9

我试图在我的xml视图文件中的模型之间进行过滤。但我不能使用外部模型的值。

实际上,我尝试根据之前的选择过滤字段(M2O)的选项。

  

Myview.xml试图渲染这个

     

属性:[从列表中选择一个属性]

     

版本:[此处选择版本(来自先前所选属性的可用版本)]

有我的模特

alternative_model
    code                    =   fields.Char('code', required=True, size=6)
    description             =   fields.Char('description', required=True)
    attribute_type_id       =   fields.Many2one('attribute', required=True)
    attribute_version_id    =   fields.Many2one('version', required=True)

alternative_model
    code            =   fields.Char('code', required=True, size=2)
    description     =   fields.Char('description', required=True)
    alternative_ids =   fields.One2many('alternative','attribute_version_id')

alternative_model
    code            =   fields.Char('code',required=True,size=6)
    attribute_id    =   fields.Many2one('attribute',required=True)
    description     =   fields.Char('description',required=True)
    tag_ids         =   fields.One2many('tag','attribute_version_id')

我使用以下域名: <field string="version" name="attribute_version_id" domain="[([attribute_type_id.code], '=',[attribute_version_id.attribute_id.code])]"/>

2 个答案:

答案 0 :(得分:1)

在这种情况下,您需要使用onchange方法来更新域 你的许多领域:

  @api.onchange('attribute_type_id')
  def onchage_attribute(self):
    if self.attribute_type_id:# check if the user has selected an attribute
        # cancel the selected version 
        #but you can check if it much the domain before seting to False
        self.attribute_version_id = False 
        # return the new domain
        return {'domain':{'attribute_version_id':[('attribute_id', '=', self.attribute_type_id.id)]}
    else: # remove the domain 
        return {'domain':{'attribute_version_id':[]}

答案 1 :(得分:0)

你的xml似乎错了。

1. /您正在尝试使用相同的字段尝试在屏幕上显示该字段,这是错误的。

2. /此域名不起作用,因为它不允许访问运营商右侧的其他模型属性,在您的情况下它是'='

尝试对'attribute_version_id'使用'name_search'方法,您可以使用上下文传递所需的值,并在此基础上,可以过滤掉'attribute_version_id'的记录。

尝试“相关”字段。