odoo处理重复数据及弹窗提示
避免客户重复
方法1:使用数据库唯一约束
_sql_constraints = [
('name_uniq', 'unique (name)', "该客户已存在"),
]
重启服务-->升级应用模块,在数据库中就可以看到唯一约束了。
输入数据,测试验证,效果如下:
注意:如果历史数据有重复的,需要先处理掉历史数据,否则唯一约束不生效
方法2:使用python程序控制(@api.contrains)
@api.constrains('name')
def _check_name_unique(self):
customer = self.env['res.partner'].search([('name','=',self.name)])
if len(customer)>0:
return {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'title': '提示信息',
'message': '数据重复',
'type': 'success',
'sticky': False
},
}
参数解释: type: 'ir.actions.client': 定义通知的类型,表示这是一个客户端动作,会触发前端的一些操作。
tag: 'display_notification': 定义客户端动作的标签,告诉Odoo前端如何处理这个动作。在这里,它表示显示通知
params: 包含了通知的详细参数
- title:设置通知的标题
- message:设置通知的消息内容
- sticky:设置通知是否“粘性”,如果设置为True,通知将一直显示在界面上,直到用户手动关闭,否则自动关闭
- type:设置通知的类型,包括danger, warning , success, info
odoo处理重复数据及弹窗提示