Openerp 为什么自定义字段不能在创建模式下保存,而是在odoo的写入模式下保存?
我在产品模板模型中添加了partnumber字段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=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。