php-如何使用xml-rpc在odoo中插入one2many值

目前,我正在使用odoo 8.0.实际上,我正在使用XML-RPC API创建产品.这里是使用PHP从xml-rpc创建产品的代码.

$url = "http://localhost:8069";
$db = "xmlcreate";
$username = "admin";
$password = "admin";
require_once('ripcord-master/ripcord.PHP');
$common = ripcord::client("$url/xmlrpc/2/common");
$uid = $common->authenticate($db, $username, $password, array());
$models = ripcord::client("$url/xmlrpc/2/object");

$product = array('name' => 'Sample',
                 'type' => 'product',
                 'list_price' => 4.6,
                 'standard_price' => 3.25
           );
$product_id = $models->execute_kw($db, $uid, $password,  'product.template','create',array($product));

产品创建成功.然后,我手动创建属性名称Color(attribute_id = 1)和值绿色(value_id = 1).接下来,我将通过以下代码更新上述varaint(Color).

$attributes = array();
$attributes[] = 0;
$attributes[] = 0;
$attributes['attribute_id'] = 1; // attribute is color (color -> 1)
$attributes['values_id'] = array(1); // attribute value is green(green -> 1) 

$existing_prodid = 1;
$up_attr_id = $models->execute_kw($db, $uid, $password,'product.template','write',array($existing_prodid, array('attribute_line_ids' => $attributes)));
print_r($up_attr_id);

没有错误.它将打印更新的ID.但是这些变体不会在odoo前端的产品表单视图中更新. “ attribute_line_ids”是product.template对象中的一个字段.我认为从xml-rpc PHP更新one2many字段的语法不正确.请帮我.提前致谢.

解决方法:

One2many model always hold the foreign key or i say Many2one of
it’s associative model .

例如:

odoO中,product.template使用字段attribute_line_ids与product.attribute.line具有One2many关系.

并且product.attribute.line使用product_tmpl_id字段与product.template具有Many2one关系.

如果要在attribute_line_ids中插入一个值,则必须在product.attribute.line中创建一条记录.

请仔细阅读以下代码段:

$existing_prodid = 59;
$existing_attribute_id = 2;
$existing_value_id = 4;
$product_attribute_line = $models->execute($db, $uid, $password,
                                       'product.attribute.line','create',
                                        array('product_tmpl_id' => $existing_prodid;,
                                            'attribute_id'=>$existing_attribute_id,
                                            'value_ids'=>array(array(6,0,array($existing_value_id)))
                                                 ))

我很确定这将帮助您解决问题.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...