Odoo create()正好接受2个参数(给定1个)

Odoo create()正好接受2个参数(给定1个),odoo,odoo-10,Odoo,Odoo 10,每当我创建记录时,都会出现一个错误: “create()只接受2个参数(给定1个)” 在给定代码中: @api.model @api.Constraints('xyz') def创建(自身、值、**kwargs): res=超级(项目,自我)。创建(值) 返回res 尝试以下代码: @api.model @api.Constraints('xyz') def创建(自身、值): res=超级(项目,自我)。创建(值) 返回res 注意:您试图将一个参数传递给create函数,但实际上create

每当我创建记录时,都会出现一个错误:

“create()只接受2个参数(给定1个)”

在给定代码中:

@api.model
@api.Constraints('xyz')
def创建(自身、值、**kwargs):
res=超级(项目,自我)。创建(值)
返回res
尝试以下代码:

@api.model
@api.Constraints('xyz')
def创建(自身、值):
res=超级(项目,自我)。创建(值)
返回res

注意:您试图将一个参数传递给
create
函数,但实际上
create
函数根据定义接受两个参数。

请尝试以下代码:

@api.model
@api.constrains('xyz')
def create(self, vals):
    project = super(Project, self).create(vals)
    return project

如果要覆盖
create
方法,可以看到以下示例:

类名(models.Model): _inherit=“model.name”#要从中继承的模型

@api.model
def create(self, vals):
    record = super(ClassName, self).create(vals)
    # your code here        
    return record
确保在super方法中使用类名

如果要在
xyz
上添加约束,请执行以下操作:

从openerp.exceptions导入验证错误
@api.Constraints('xyz')
定义检查xyz(自身):
请自行记录:
#在此检查“record.xyz”的值
#然后,如果评估为False,则引发验证错误
#示例:raise ValidationError(“xyz必须为”)
@约束仅支持简单字段名,虚线名称(关系字段的字段,例如partner_id.customer)不受支持,将被忽略
@仅当修饰方法中声明的字段包含在create或write调用中时,才会触发约束。这意味着视图中不存在的字段在记录创建期间不会触发调用。必须重写create以确保始终触发约束(例如,测试是否缺少值)


不能同时使用约束和模型装饰器

您不应该在ORM create方法中使用
@api.constraints
。改为使用该装饰器创建您自己的方法,每次执行Create method或write method modifies
xyz
时都会自动调用该方法。顺便问一下,您想用
@api.Constraints('xyz')
做什么?