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

How can I get the sale_order.id from sale_order_line onchange method? In odoo 9

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

我有这个代码:

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。为什么会这样,我怎样才能得到它?

试试这个

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

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

self._origin.related_sale_order.id

但是你应该记住,当你创建记录时相关的销售订单还没有保存在数据库中,你会得到相同的结果,但在编辑模式下你会有 id。

希望对您有所帮助。