之前的版本【odoo16之前】 支持 返回3种类型
Message
return {
'warning': {'title': "Warning", 'message': "What is this?", 'type': 'notification'},
}
对于 message type,支持 2种
- dialog
- 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"/>
备注: