gpt4 book ai didi

python - _sql_constraints 和 _constraints 在 OpenERP/Odoo 上的区别?

转载 作者:太空狗 更新时间:2023-10-29 22:25:57 27 4
gpt4 key购买 nike

我注意到 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.'),
]

地点:

  • 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 API 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")

关于python - _sql_constraints 和 _constraints 在 OpenERP/Odoo 上的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com