Odoo:更新one2many字段上的记录时触发_更改



如何在更新one2many字段上的记录时触发on_che?

.. warning::
``@onchange`` only supports simple field names, dotted names
(fields of relational fields e.g. ``partner_id.tz``) are not
supported and will be ignored
.. danger::
Since ``@onchange`` returns a recordset of pseudo-records,
calling any one of the CRUD methods
(:meth:`create`, :meth:`read`, :meth:`write`, :meth:`unlink`)
on the aforementioned recordset is undefined behaviour,
as they potentially do not exist in the database yet.
Instead, simply set the record's field like shown in the example
above or call the :meth:`update` method.
.. warning::
It is not possible for a ``one2many`` or ``many2many`` field to modify
itself via onchange. This is a webclient limitation - see `#2693 <https://github.com/odoo/odoo/issues/2693>`_.

这是我看到@api.onchange的代码时得到的,它只是不支持一个2many

这是可能的。只需遵循以下步骤:

  1. 创建一个Many2one字段。

  2. 创建一个One2many字段,用于存储onchange记录。

  3. 创建onchange方法。

代码:

many2one_field = fields.Many2one('One2manyFieldModelName', string="Many2one Field")
one2many_record_field = fields.One2many('Many2oneFieldModelName', 'field_name', store=True)
@api.onchange('many2one_field')
def _onchange_many2one_field(self):
self.one2many_record_field = self.env['One2manyFieldModelName'].search([('One2manyFieldName', '=', self.many2one_field)])

此外,如果您使用的是Odoo Version 11及更高版本,则必须在XML中给定属性force_save,才能在onchange中保存只读字段。

<field name="field_name" force_save="1"/>

解释:创建了一个包含one2many字段数据的Many2one字段,然后创建了一个子字段,根据需要存储onchange记录,然后在调用onchange方法并使用搜索功能存储记录后,您可以使用任何功能,如搜索、浏览等。

我希望这对你来说是可以理解的,如果不只是评论的话。

如果有用,请接受答案。。。

谢谢:(

相关内容

  • 没有找到相关文章

最新更新