Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp 为什么自定义字段不能在创建模式下保存,而是在odoo的写入模式下保存?_Openerp_Odoo 10 - Fatal编程技术网

Openerp 为什么自定义字段不能在创建模式下保存,而是在odoo的写入模式下保存?

Openerp 为什么自定义字段不能在创建模式下保存,而是在odoo的写入模式下保存?,openerp,odoo-10,Openerp,Odoo 10,我在产品模板模型中添加了partnumber字段 partnumber=fields.Char( “零件号”,计算=“计算零件号”, 反向=''设置\零件号',存储=真) 我编写的函数类似于内部参考代码 @api.dependens('product\u variant\u ids','product\u variant\u ids.partnumber')) 定义计算零件号(自身): 唯一变量=自过滤(lambda模板:len(模板.产品变量ID)=1) 对于唯一_变体中的模板: templ

我在产品模板模型中添加了partnumber字段

partnumber=fields.Char(
“零件号”,计算=“计算零件号”,
反向=''设置\零件号',存储=真)
我编写的函数类似于内部参考代码

@api.dependens('product\u variant\u ids','product\u variant\u ids.partnumber'))
定义计算零件号(自身):
唯一变量=自过滤(lambda模板:len(模板.产品变量ID)=1)
对于唯一_变体中的模板:
template.partnumber=template.product\u variant\u id.partnumber
对于中的模板(自唯一的_变体):
template.partnumber=“”
@api.1
def设置零件号(自身):
如果len(自产品变量ID)==1:
self.product\u variant\u id.partnumber=self.partnumber
我成功地在产品表单中添加了零件号。我使用上述方法获取名称(在产品描述中获取零件号)

我的问题是无法在创建方法中保存零件号。 该字段仅保存在编辑模式下,正如“dccdany”在他的评论中所说的那样,模板的创建顺序有点复杂。你可以看到。首先,将创建模板。不会设置零件号,因为此时不存在变体。 创建模板后,将创建没有零件号的变体(稍后一行),因此创建模板后将没有零件号

你能做什么?只需覆盖
product.template
create(),如:

@api.model
def创建(自身、VAL):
template=super(ProductTemplate,self).create(VAL)
如果VAL和len中的“零件号”(模板.产品变量ID)==1:
template.partnumber=vals.get('partnumber')
返回模板

您确定在创建之前,您的产品变体中有len吗?@dccdany:谢谢您的评论。我只是检查了一下,产品变体的长度为零。我终于明白了这里不会设置len。