OpenERP one2many问题

时间:2013-10-28 15:17:17

标签: openerp

我有以下内容:

shipment_obj = self.pool.get('stock.picking.in').browse(cr, uid, context.get('active_id'))

这返回正确的对象,我可以访问属性,但是当我访问O2m字段“move_lines”时,它返回None对象而不能迭代。

我是否需要特殊的方式来访问特定传入货物的产品?

这是现有的OpenERP:

    'move_lines': fields.one2many('stock.move', 'picking_id', 'Internal Moves', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}),
    'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'),

3 个答案:

答案 0 :(得分:0)

stock.picking.instock.picking.outstock.picking实际上是同一个表stock_pickingstock.picking被视为stock.picking.in和{stock.picking.out的基础{1}}。我认为这个功能仍然有一些问题,并且在openerp v8中解决了。所以当你需要浏览对象时,无论你是在浏览stock.picking还是stock.picking.in,都要使用stock.picking.out

答案 1 :(得分:0)

使用时

shipment_obj = self.pool.get('stock.picking.in').browse(cr, uid, context.get('active_id'))

在这里你将获得一个浏览记录列表,你可以访问one2many字段move_lines,如

for shipment_id in shipment_obj:
    move_lines = shipment_id.move_lines

在这里,您将获得列表中每条记录的move_lines ...

答案 2 :(得分:0)

需要添加它来解决问题:

if context is not None and context.get('active_id'):

这是我认为调用方法不需要检查上下文和active_id的方式,因为总会有上下文和active_id,我错了。