每当我创建一条记录时,我都会收到错误:
" create()只需要2个参数(给定1个)"
在给定的代码中:
@api.model
@api.constrains('xyz')
def create(self,values,**kwargs):
res = super(Project, self).create(values)
return res
答案 0 :(得分:1)
尝试以下代码:
@api.model
@api.constrains('xyz')
def create(self,values):
res = super(Project, self).create(values)
return res
注意:您尝试将一个参数传递给create
函数,但实际上create
函数根据定义采用两个参数。
答案 1 :(得分:0)
请尝试这是代码:
@api.model
@api.constrains('xyz')
def create(self, vals):
project = super(Project, self).create(vals)
return project
答案 2 :(得分:0)
如果要覆盖create
方法,可以看到以下示例:
@api.model
def create(self, vals):
record = super(ClassName, self).create(vals)
# your code here
return record
确保在super方法中使用类名。
如果您想在xyz
上添加约束,请按以下步骤操作:
from openerp.exceptions import ValidationError
@api.constrains('xyz')
def _check_xyz(self):
for record in self:
# Check here the value of "record.xyz"
# Then raise for example a validation error if it is evaluated to False
# example: raise ValidationError("xyz must be ")
@constrains仅支持简单字段名称,点名称(关系字段的字段,例如partner_id.customer)不受支持且将被忽略
仅当在deco或write调用中包含装饰方法中的声明字段时,才会触发@constrains。这意味着视图中不存在的字段在创建记录期间不会触发调用。必须覆盖create才能确保始终触发约束(例如,测试缺少值)。
答案 3 :(得分:0)
您无法同时使用约束和模型装饰器。