@api.constrains()
@api.constrains('param1')
def _notAllowed(self):
if self.param1 = 0 :
raise ValidationError("Zero is Not allowed")
@api.autovacuum()
El método se ejecutará cada 24 horas.
@api.onchange()
Solo aplica para los formularios (vistas), su función es monitorear si un valor en el formulario cambia en caso que si, pueden desenlazarse las acciones deseadas.
# car.py
===============
@api.onchange('car_verified')
def _ready_to_trip(self):
if self.car_verified:
self.ready_to_trip = True
else:
self.ready_to_trip = False
@api.depends()
Al igual que @api.onchange, monitorea cambios en formularios (vistas), pero además es capaz monitorear cambios a nivel de backend, una peculiaridad es que puede trabajar con campos de modelos relacionados, es decir, que se disparará la función si algo cambia en el padre, por ejemplo.
# car.py
===============
# Cuando cambie el campo 'car_verified' o el campo email en la tabla res_users
# se disparará el siguiente código.
@api.depends('car_verified','res_users.email')
def _ready_to_trip(self):
if self.car_verified:
self.ready_to_trip = True
else:
self.ready_to_trip = False
@api.depends_context()
abc
@api.model_create_multi()
Permite crear múltiples registros en un modelo (por default solo permite uno a la vez), es decir, con esta anotación se prepara al modelo para que soporte la creación de múltiples registros.
# car.py
===============
@api.model_create_multi
# Se sobreescribe el método create, es decir,
# el siguiente código reemplaza al del ORM
def create(self, vals_list):
records = super(Car, self).create(vals_list)
return records
def create_cars(self):
car1 = {'model':'1AB', 'color': 'Red'}
car2 = {'model':'i84', 'color': 'Blue'}
self.env['odoo_db.car'].create([car1,car2])
# car.xml
===============
<button name="create_cars" string="CrearMulti" type="object" class="eo_highlight">
@api.returns()
abc
@api.model()
Sirve para migrar versiones antiguas a versiones modernas.
@api.one()
Obsoleta.
@api.multi()
Obsoleta.