search_count:搜索
大于1 表示记录条数不止一条;多条件时,search_count后加多个domain
for every_name in self:
if self.search_count([('name','=',every_name.name)]) > 1:
raise ValidationError("该用户已存在")
约束:odoo保存一条记录时检查数据完整性和有效性。
python约束:@constrains 装饰器定义odoo系统内部的约束。
@api.constrains('borrow_date','return_date','name') # 约束中定义相关字段
def _check_only(self):
if self.borrow_date > self.return_date:
raise ValidationError("借书时间不能晚于还书时间")
for every_name in self:
if self.search_count([('name','=',every_name.name)]) > 1:
raise ValidationError("该用户已存在")
数据库约束:_sql_constrains 定义数据库级别上的约束信息。
内部的基本元素是一个(name, sql_definition, message)的元祖。
- name:该约束的名称。
- sql_definition:定义在数据库中的函数。
- message:如果违反在数据库的约束将会显示的信息。
_sql_constraints = [ # 服务器约束
('uniq_name', 'unique(name)', '用户已存在')
]
cr:当前数据库的游标,可以使用它来直接调用sql语句
uid:当前用户的ID
ids:调用当前函数的记录的id列表
context:为OpenERP中每一个函数都要使用的全局参数
print(self.env.uid)