如何从sale_order_line onchange方法获取sale_order.id?在odoo 9

时间:2017-04-07 09:27:52

标签: python openerp odoo-9

我想从sale.order.line onchange方法获取 sale.order id 值。

我有这段代码:

class SaleOrderLineExt(models.Model):
    _inherit = ['sale.order.line']

    @api.multi
    @api.onchange('my_field')
    def my_field_change(self):

        related_sale_order = self.order_id
        print 'related_sale_order: ', related_sale_order
        print 'related_sale_order.id: ', related_sale_order.id

但我输出的是:

related_sale_order: sale.order(<openerp.models.NewId object at 0x7f7566029810>,)
related_sale_order.id: <openerp.models.NewId object at 0x7f7566029810>

我可以查看销售订单的其他值,但不能查看ID。为什么这样,我怎么能得到它?

2 个答案:

答案 0 :(得分:2)

在onchange方法中,框架传递d虚拟对象,该对象在视图中具有值,以便获取您执行的原始记录:

self._origin.related_sale_order.id

但是您应该记住,创建记录时相关的销售订单尚未保存在数据库中,您将获得相同的结果,但在编辑模式下,您将拥有该ID。

希望这会对你有所帮助。

答案 1 :(得分:0)

试试这个

class SaleOrderLineExt(models.Model):
    _inherit = ['sale.order.line']

    @api.multi
    @api.onchange('my_field')
    def my_field_change(self):

        related_sale_order = self.order_id.id
        print "related_sale_order " related_sale_order