In a Model attribute order should follow the series given below.
Private attributes (_name, _description, _inherit, ...)
1. Default method and _default_get
2. Field declarations
3. Compute and search methods in the same order as field declaration
4. Constrains methods (@api.constrains) and onchange methods (@api.onchange)
5. CRUD methods (ORM overrides)
6. Action methods
7. And finally, other business methods.
For example you can see below code..
class Event(models.Model):
# Private attributes
_name = 'event.event'
_description = 'Event'
# Default methods
def _default_name(self):
...
# Fields declaration
name = fields.Char(string='Name', default=_default_name)
seats_reserved = fields.Integer(oldname='register_current', string='Reserved Seats',
store=True, readonly=True, compute='_compute_seats')
seats_available = fields.Integer(oldname='register_avail', string='Available Seats',
store=True, readonly=True, compute='_compute_seats')
price = fields.Integer(string='Price')
# compute and search fields, in the same order that fields declaration
@api.multi
@api.depends('seats_max', 'registration_ids.state', 'registration_ids.nb_register')
def _compute_seats(self):
...
# Constraints and onchanges
@api.constrains('seats_max', 'seats_available')
def _check_seats_limit(self):
...
@api.onchange('date_begin')
def _onchange_date_begin(self):
...
# CRUD methods
def create(self):
...
# Action methods
@api.multi
def action_validate(self):
self.ensure_one()
...
# Business methods
def mail_user_confirm(self):
...
Note-Private attributes (_name, _description, _inherit, ) is used to declare model.
0 Comment(s)