如何在 onchange 方法中组合警告消息和更新字段值?在 odoo 9

How can I combine a warning message and update field value inside of onchange method? In odoo 9

在旧版本的odoo(openerp 7)中,我曾经这样做过:

@api.multi
@api.onchange('my_field')
def my_field_change(self, cr, uid, partner_ids, context=None):
  if condition is True:
     return {
            'warning': {'title': _('Error'), 'message': _('Error message'),},
            'value': { 'my_field': new_value },
             }

如果我想在 odoo 9 中执行此操作,我有以下代码:

@api.multi
@api.onchange('my_field')
def my_field_change(self):
  if condition is True:
     return {
            'warning': {'title': _('Error'), 'message': _('Error message'),},
            'value': { 'my_field': new_value },
             }

显示警告 window 但值字段被忽略。

如何更改字段的值?

在 odoo Onchange 方法中,您不能 return 值与旧版本的 odoo 相同。

Onchange 方法只会 return 警告和域。

@api.multi
@api.onchange('my_field')
def my_field_change(self):
    self.field=value
    return {
        'warning': {'title': _('Error'), 'message': _('Error message'),},
         }

在新的 Odoo 中 api 无需 return 字典中的值只需在相关字段中赋值即可。

例如:sale.field=值

这可能对您有所帮助。