create()只需要2个参数(给定1个)

时间:2018-05-19 13:31:26

标签: odoo odoo-10

每当我创建一条记录时,我都会收到错误:

  

" create()只需要2个参数(给定1个)"

在给定的代码中:

@api.model
@api.constrains('xyz')
def create(self,values,**kwargs):
    res = super(Project, self).create(values)
         return res

4 个答案:

答案 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方法,可以看到以下示例:

class ClassName(models.Model):     _inherit =“model.name”#要继承的模型

@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)

您无法同时使用约束和模型装饰器。