SQL 不增加序列的约束验证 - Odoo 10
SQL Constraint Validation without incrementing the Sequence - Odoo 10
我在一个表单中做了一个SQL约束但是当我们输入错误时它给我们约束错误但是表单仍然没有保存,但问题在后面,系统使增量这种形式的顺序。知道只有当 from 被 super create 函数保存后,我才创建序列。
如何在不增加序列的情况下验证约束?
这是我的序列码
@api.model
def create(self, vals):
if vals.get('name','/')=='/':
sequence = self.env['ir.sequence'].next_by_code('archive.dossier')
vals['name'] = sequence
return super(oeArchiveDossier, self).create(vals)
在odoo中使用了两种类型(实现)的序列。
- 标准
- 没有差距
标准
如果您 select 按顺序编辑此实现类型(这是默认设置),则顺序将在 postgresql 中创建并由 postgresql 管理。没有这样的控制权。因此,如果任何事务失败,则序列(下一个数字)将不会回滚。
无间隙
如果您select此实现类型,那么它将由 odoo 管理,因此如果出现任何问题,则不会跳过任何序列号。
为了更好地控制验证,在 odoo 中有一个选项可以设置约束方法。
@api.constrains('field1', 'field2')
def check_validations(self):
## Perform Validation
## If condition not satisfied then raise an error.
if validation_conditions:
## Raise an error
我在一个表单中做了一个SQL约束但是当我们输入错误时它给我们约束错误但是表单仍然没有保存,但问题在后面,系统使增量这种形式的顺序。知道只有当 from 被 super create 函数保存后,我才创建序列。
如何在不增加序列的情况下验证约束?
这是我的序列码
@api.model
def create(self, vals):
if vals.get('name','/')=='/':
sequence = self.env['ir.sequence'].next_by_code('archive.dossier')
vals['name'] = sequence
return super(oeArchiveDossier, self).create(vals)
在odoo中使用了两种类型(实现)的序列。
- 标准
- 没有差距
标准
如果您 select 按顺序编辑此实现类型(这是默认设置),则顺序将在 postgresql 中创建并由 postgresql 管理。没有这样的控制权。因此,如果任何事务失败,则序列(下一个数字)将不会回滚。
无间隙
如果您select此实现类型,那么它将由 odoo 管理,因此如果出现任何问题,则不会跳过任何序列号。
为了更好地控制验证,在 odoo 中有一个选项可以设置约束方法。
@api.constrains('field1', 'field2')
def check_validations(self):
## Perform Validation
## If condition not satisfied then raise an error.
if validation_conditions:
## Raise an error