sql_cosntraints 在原始模块的现有字段上
sql_cosntraints on exitsing field from original module
在 product.template 中有字段 default_code。是否可以添加 sql_constraints 默认代码应该是唯一的。因为这段代码不起作用。或者我需要覆盖我的服装模块中的 default_code 字段吗?
class ProductProduct(models.Model):
_inherit = 'product.template'
_sql_constraints = [
('code_uniq', 'unique (default_code)', "Default code already exists!"),
]
我会在模型 product.product
上添加约束,因为这是真正使用此信息(产品参考)的地方。但是 default_code
on product.template
仅适用于 Odoo V10。在 Odoo V8 和 V9 中它是一个未存储的相关字段,所以在 DB 中不是。所以你必须在模型 product.product
.
上添加约束
class ProductProduct(models.Model):
_inherit = 'product.product'
_sql_constraints = [
('code_uniq', 'unique(default_code)', "Default code already exists!"),
]
重要提示:如果设置约束的模块在约束失败时更新(例如 default_code 实际上在 db 中两次),它不会创建 sql 数据库中的约束。所以你必须清理数据并再次更新模块或自己在数据库中创建约束。
- 请尝试使用 Python 限制可能对您有用:
在 python 文件中导入此行:
from openerp.exceptions import ValidationError
任何在你的class中写这个方法:
@api.constrains('default_code')
def _check_default_code(self):
code = self.search([('default_code','=',self.default_code)])
if len(code) > 1:
raise ValidationError(_("Duplicate Record"))
在 product.template 中有字段 default_code。是否可以添加 sql_constraints 默认代码应该是唯一的。因为这段代码不起作用。或者我需要覆盖我的服装模块中的 default_code 字段吗?
class ProductProduct(models.Model):
_inherit = 'product.template'
_sql_constraints = [
('code_uniq', 'unique (default_code)', "Default code already exists!"),
]
我会在模型 product.product
上添加约束,因为这是真正使用此信息(产品参考)的地方。但是 default_code
on product.template
仅适用于 Odoo V10。在 Odoo V8 和 V9 中它是一个未存储的相关字段,所以在 DB 中不是。所以你必须在模型 product.product
.
class ProductProduct(models.Model):
_inherit = 'product.product'
_sql_constraints = [
('code_uniq', 'unique(default_code)', "Default code already exists!"),
]
重要提示:如果设置约束的模块在约束失败时更新(例如 default_code 实际上在 db 中两次),它不会创建 sql 数据库中的约束。所以你必须清理数据并再次更新模块或自己在数据库中创建约束。
- 请尝试使用 Python 限制可能对您有用:
在 python 文件中导入此行:
from openerp.exceptions import ValidationError
任何在你的class中写这个方法:
@api.constrains('default_code') def _check_default_code(self): code = self.search([('default_code','=',self.default_code)]) if len(code) > 1: raise ValidationError(_("Duplicate Record"))