Odoo create()正好接受2个参数(给定1个)
每当我创建记录时,都会出现一个错误: “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
@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 modifiesxyz
时都会自动调用该方法。顺便问一下,您想用@api.Constraints('xyz')
做什么?