UI模型创建上的争夺

时间:2015-05-18 10:58:43

标签: openerp odoo openerp-8 odoo-8

我有一个模特:

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实例的所有字段值都会从视图中删除而且似乎验证阻止我因为“缺少必填字段”而保存。

1 个答案:

答案 0 :(得分:0)

onchange通常不允许数据库操作,这就是self.id成为NewId实例的原因。

覆盖write函数并检查何时写入field1并执行数据库操作。优势:self.id不是NewId,而是实际ID。