_sql_constraints
oznacza, że ustawi ograniczenie po stronie bazy danych PostgreSQL.
_sql_constraints = [
('email_uniq', 'unique(email)', ' Please enter Unique Email id.'),
]
Gdzie:
email_uniq
oznacza nazwa ograniczenia,
unique(email)
oznacza unique
jest nazwa ograniczenia. email
to nazwa pola, które będzie obowiązywało w tym polu.
'Please enter Unique Email id.'
to wiadomość, która zostanie wyświetlona w oknie pop-up, gdy naruszenie zostanie naruszone.
_constraints
jest ograniczeniem python. Możemy podać naszą logikę, aby ustawić ograniczenia. Na przykład:
_constraints = [
(_check_qty_and_unitprice, u'Qty must be more than 0', ['product_qty', 'cost_unit']),
]
gdzie:
_check_qty_and_unitprice
to nazwa funkcji, gdzie musimy zastosować naszą logikę.
'Qty must be more than 0'
to wiadomość, która zostanie wyświetlona w oknie pop-up, gdy naruszone zostanie naruszenie (funkcja Pythona zwraca False
).
['product_qty', 'cost_unit']
to lista nazw pól, która oznacza, że wiązanie będzie uruchamiane dla tych dwóch pól.
W nowej Odoo APIpython constraint
mają nowe i prostsze dekorator. Poniższy przykład można zapisać w następujący sposób:
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")