我想对字段(TIN)进行控制检查,以便每次创建新客户时,TIN都应该是唯一的。如果其他客户拥有该TIN,则必须显示错误消息。 我想这句法:如何对字段进行约束
_sql_constraints=[('uniq_vat', 'UNIQUE(self.env.vat)',
'It already exists another company with the same TIN!')]
我使用odoo 10
我想对字段(TIN)进行控制检查,以便每次创建新客户时,TIN都应该是唯一的。如果其他客户拥有该TIN,则必须显示错误消息。 我想这句法:如何对字段进行约束
_sql_constraints=[('uniq_vat', 'UNIQUE(self.env.vat)',
'It already exists another company with the same TIN!')]
我使用odoo 10
_sql_constraints = [('unique_tin_no', 'unique(field_name)', 'It already exists another company with the same TIN!')]
请尽量避免刚刚倾倒的代码作为一个答案,并试图解释它做什么,以及为什么。对于那些没有相关编码经验的人来说,你的代码可能并不明显。 – Frits
_sql_constraints=[('uniq_vat', 'unique(vat)', 'It already exists another company with the same TIN!')]
你只需要将“vat”替换为“self.env.vat”sql_constrains只需要将要应用于下面的数据库表的字段名称。
约束可以有两种类型。
数据库约束
数据库的约束将在数据库级别添加验证,而你升级模块。数据库约束是元组列表,其中元组包含三个参数。
_sql_constraints = [
('constrain name', 'unique(field1, field2)', 'error message which you want to raise on constrains violation'),
('constrain name', 'constrains defination', 'error message which you want to raise on constrains violation'),
]
实施例:
_sql_constraints = [
('uniq_vat', 'unique(vat)', 'It already exists another company with the same TIN!'),
]
多个数据库约束可以被加在一起。
应用约束
应用程序的限制是用来触发自定义的验证以创纪录的时间添加,更新和删除。简而言之,如果记录发生任何更改,您的自定义方法将被调用。
如何在代码中定义约束。
@api.constrains('field1','field2'....)
约束可以一起应用于多个领域,您也可以单独定义它。
@api.constrains('vat')
def check_vatnumber(self):
for record in self:
obj = self.search([('vat','=',record.vat),('id','!=',record.id)])
if obj:
raise Warning("Warning", "It already exists another company with the same TIN!")
很好地解释了答案 –
,而不是简单地self.env.vat要给外地的名字(你的情况TIN) –