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 sayMany2one
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)))
))
我很确定这将帮助您解决问题.
标签:xml-rpc,odoo-8,openerp-8,php 来源: https://codeday.me/bug/20191027/1942378.html