Odoo17 onchange

之前的版本【odoo16之前】 支持 返回3种类型

Message

return {

'warning': {'title': "Warning", 'message': "What is this?", 'type': 'notification'},

}

   

对于 message type,支持 2种

  1. dialog
  2. notification

   

Domain

return {

"domain" :{

'field1': domain_expr,

'field2': domain_expr

}

}

   

Value

return {

"value" :{

'field': value }

}

可以只写 value 关键字的 值, onchange 方法会自动封装好。

   

现在只支持返回 2种,Message 和 Value; 对于需要使用 domain 的地方,需要 通过辅助字段的方式实现,例如, 为 domain 取值的字段,写一个 计算字段computed_fields_ids , 在这个计算字段 算出 值集; 然后写 domain = [('field_id', 'in', 'computed_fields_ids' )]

   

models.py

   

tag_ids_domain = fields.Binary(string="tag domain", help="Dynamic domain used for the tag that can be set on tax", compute="_compute_tag_ids_domain")

   

@api.depends('company_id.multi_vat_foreign_country_ids', 'company_id.account_fiscal_country_id')

def _compute_tag_ids_domain(self):

for rep_line in self:

allowed_country_ids = (False, rep_line.company_id.account_fiscal_country_id.id, *rep_line.company_id.multi_vat_foreign_country_ids.ids,)

rep_line.tag_ids_domain = [('applicability', '=', 'taxes'), ('country_id', 'in', allowed_country_ids)]

   

views.xml

   

<field name="tag_ids"

widget="many2many_tags"

options="{'no_create': True}"

domain="tag_ids_domain"/>

   

   

备注:

相关 PR https://github.com/odoo/odoo/pull/133049

jeffery 2024年7月21日
标签
存档
超卖