如何在自定义模块odoo 9之前在数据库中插入新记录,检查记录是否存在?插入数据之前检查计数odoo 9
例如:
如果表project.task我们的名字 “PARIS” 和date_deadline “2017年1月1日”,在下面的代码我需要警告之前执行...
vals = {'name': 'PARIS','date_deadline': '2017-01-01']}
create_new_task = http.request.env['project.task'].create(vals)
或者,也许尝试从project.task获得计数,其中name ='PARIS'和date_deadline ='2017-01-01',然后单击按钮保存!
任何简单的解决方案?
@api.one
@api.constrains('date','time') #Time is Many2one
def _check_existing(self):
count = self.env['test.module'].search_count([('date','=',self.date),('time','=',self.time.id)])
print(self.date) #2017-01-01
print(self.time.id) #1
if(count >= 1):
raise ValidationError(_('DUPLICATE!'))
尝试在数据库,在那里是日期= 2017年2月2日和时间插入新记录= 1后,得到这个消息:
重复键值违反唯一约束“test_module_time_uniq” 详细信息:按键(时间)=(1)已经存在。
时间存在但日期不同!我需要约束2值!在DATABSE我只有一个列在哪里日期= 2017年1月1日和时间= 1
你对时间字段('test_module_time_uniq')定义的SQL唯一约束。你只需要删除它,它应该工作。 – dgeorgiev