我有一个模特:
class MyModel:
name = ...
field1 = fields.Many2one(comodel_name='sale.order')
@staticmethod
def _do_some(env, inst):
...
env['stock.picking'].create(vals={
'move_type': 'direct',
'company_id': delivery_order.company_id.id,
'picking_type_id': pick_type_id
}) # UI Scrambles when this happens
...
@onchange('field1')
def field1_changed(self):
# self.id is a NewId ... which makes no sense
# this_inst is a replacement for self (because of NewId)
this_inst = ... I search this instance by name
MyModel._do_some(self.env, this_inst)
我有一个包含MyModel.field1
下拉字段的视图,当我自然更改时会调用MyModel.field1_changed
,然后调用MyModel._do_some
。
在create
模型上调用stock.picking
后,我的用户界面会出现问题,我的意思是MyModel
实例的所有字段值都会从视图中删除而且似乎验证阻止我因为“缺少必填字段”而保存。
答案 0 :(得分:0)
onchange
通常不允许数据库操作,这就是self.id
成为NewId
实例的原因。
覆盖write
函数并检查何时写入field1
并执行数据库操作。优势:self.id
不是NewId
,而是实际ID。