Openerp 开启任何问题

Openerp 开启任何问题,openerp,Openerp,我有以下资料: shipment_obj = self.pool.get('stock.picking.in').browse(cr, uid, context.get('active_id')) 这将返回正确的对象,我可以访问属性,但当我访问O2m字段“move_line”时,它将不返回任何对象,并且无法迭代 我是否需要特殊方式访问特定进货的产品 这在现有OpenERP中: 'move_lines': fields.one2many('stock.move', 'picking_id

我有以下资料:

shipment_obj = self.pool.get('stock.picking.in').browse(cr, uid, context.get('active_id'))
这将返回正确的对象,我可以访问属性,但当我访问O2m字段“move_line”时,它将不返回任何对象,并且无法迭代

我是否需要特殊方式访问特定进货的产品

这在现有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'),

stock.picking.in
stock.picking.out
stock.picking
实际上是同一张表
stock\u picking
stock.picking.out
,picking被认为是
stock.picking.in
的基础。我认为该功能仍然存在一些问题,在openerp v8中已经解决。因此,当您需要浏览对象时,使用
stock.picking
无论您是浏览
stock.picking.in
还是
stock.picking.out
都可以使用该功能

shipment_obj = self.pool.get('stock.picking.in').browse(cr, uid, context.get('active_id'))
在这里,您将获得一个浏览记录列表,您可以访问One2任何字段移动行,如

for shipment_id in shipment_obj:
    move_lines = shipment_id.move_lines

在这里,您将获得列表中每个记录的移动行…

需要添加此项来解决问题:

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

我认为调用该方法的方式不需要检查上下文和活动\u id,因为总是会有上下文和活动\u id,我错了。

结果如下:AttributeError:'NoneType'对象没有属性'move\u lines'如果传递单个id,browse将返回一个对象,和对象列表(如果传递了ID列表)。这是来自文档。无论如何,我发现了这个问题,但现在我不知道该怎么想。原始OP中的代码可以正常工作,但前提是我添加了一个条件元素,而我现在正在抓挠这个元素。对于装运中的行\u obj.move\u行:line.property等。。。行,但前提是我检查循环前的shipping_obj.move_行是否为None。我认为我们不需要使用您添加的行。如果有任何记录或空列表,shipping_obj.move_行将为我们提供对象列表。