我注意到 Odoo ERP 有两种限制。
但我想知道 _sql_constraints 与 _constraints 之间有什么区别?
_sql_constraints = {
('email_uniq', 'unique(email)', ' Please enter Unique Email id.')
}
_constraints=[
(_check_qty_and_unitprice, u'Qty must be more than 0',['product_qty', 'cost_unit']),
]
_sql_constraints
意味着它将在 postgresql 数据库端设置约束。
_sql_constraints = [
('email_uniq', 'unique(email)', ' Please enter Unique Email id.'),
]
Where:
_constraints
是Python约束。我们可以给出我们的逻辑来设置约束。例如:
_constraints = [
(_check_qty_and_unitprice, u'Qty must be more than 0', ['product_qty', 'cost_unit']),
]
Where :
_check_qty_and_unitprice
是我们需要应用逻辑的函数名称。
'Qty must be more than 0'
是一条消息,当违反约束时它将显示在弹出窗口上(python 函数返回False
).
['product_qty', 'cost_unit']
是字段名称列表,这意味着将为这两个字段触发约束。
截至新Odoo API python constraint
have a 新的和更简单的装饰师。下面的例子可以这样写:
from openerp.exceptions import ValidationError
@api.constraints('product_qty', 'cost_unit')
def _check_something(self):
for record in self:
if record.product_qty < 1:
raise ValidationError("Qty must be more than 0")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)