2015-07-31 1 views

ответ

6

_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 APIpython 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") 

 Смежные вопросы

  • Нет связанных вопросов^_^