Odoo 8 Python如何分配Many2many或one2many XMLRPC创建对象

时间:2017-04-24 20:52:26

标签: python openerp odoo-8 xml-rpc

我需要XMLRPC的帮助,我使用python,我试图创建产品变体,我需要将值分配给字段many2many,这里是我的代码

   idProductLineAttributeLine = 
   models.execute_kw(db,uid,password,'product.attribute.line','create',
   [{'product_tmpl_id':idProduct,'attribute_id':idAttr,'value_ids': (6,0,
   [idValue])}])

如果我指定普通字段,则每个事情都可以正常工作,但是当涉及到many2many字段或one2many字段时,它会显示如下所示

in __dump\nTypeError: cannot marshal <type 'builtin_function_or_method'> objects\n", "message": "cannot marshal <type 'builtin_function_or_method'> objects", "name": "exceptions.TypeError", "arguments": ["cannot marshal <type 'builtin_function_or_method'> objects"]}}}

我做错了什么?请帮助我:),谢谢高级

在书中,odoo必不可少,它说我必须使用这个也分配很多2价值或者1个价值,但仍然没有运气

(0,_ ,{' field': value}): This creates a new record and links it to this one
(1, id,{' field': value}): This updates values on an already linked record
(2, id,_): This unlinks and deletes a related record
(3, id,_): This unlinks but does not delete a related record
(4, id,_): This links an already existing record
(5,_,_): This unlinks but does not delete all linked records
(6,_,[ ids]): This replaces the list of linked records with the provided list

更新  我设法通过将[] thx添加到dccdany来指出这个问题来解决这个问题:),并将产品变体添加到产品中

 models.execute_kw(db,uid,password,'product.attribute.line','create',   [{'product_tmpl_id':idProduct,'attribute_id':idAttr,'value_ids': (6,0,       [idValue])}])

,但产品变体不会自动生成,我仍然需要通过编辑手动刷新产品并保存任何想法?

http://imgur.com/WGLUbQo

如屏幕截图中所示,有4个产品型号,但右上角附近的状态只说3个变种我错过了什么?

1 个答案:

答案 0 :(得分:1)

在上面的代码中,您只是添加了新的product.attribute.line.Technically odoo将创建新的属性行,但是当产品模板写入方法将在此时调用时,系统将调用方法create_variant_ids并创建新的变体。

以下是创建或更新变体的最简单方法。

 models.execute_kw(db,uid,password,'product.attribute.line','create',   [{'product_tmpl_id':idProduct,'attribute_id':idAttr,'value_ids': (6,0,       [idValue])}])

 models.execute_kw(db,uid,password,'product.template','write',{'active':True})

当您调用产品模板写入方法时,系统将调用create_variant_ids方法。

这可能会对你有帮助。