我注意到Odoo有两种约束。但是我想知道_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']),
]发布于 2015-07-31 04:20:47
_sql_constraints意味着它将在postgresql数据库端设置约束。
_sql_constraints = [
('email_uniq', 'unique(email)', ' Please enter Unique Email id.'),
]其中:
email_uniq的意思是约束名称unique(email)的意思是unique是约束的名称。email是一个字段名,它的约束将应用于该字段。'Please enter Unique Email id.'是一条消息,当违反约束时,它将显示在弹出窗口上。_constraints是python约束。我们可以给出我们的逻辑来设置约束。例如:
_constraints = [
(_check_qty_and_unitprice, u'Qty must be more than 0', ['product_qty', 'cost_unit']),
]其中:
_check_qty_and_unitprice是一个函数名,我们需要应用我们的逻辑。'Qty must be more than 0'是一条消息,当违反约束时,它将显示在弹出窗口上( python函数返回False)。['product_qty', 'cost_unit']是一个字段名列表,这意味着这两个字段将触发约束。作为新的,Odoo python constraint有一个新的和更简单的装饰器。下面的示例可以这样编写:
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")https://stackoverflow.com/questions/31736799
复制相似问题