from dateutil.relativedelta import relativedelta from odoo import api, fields, models class CommunitySchoolStudent(models.Model): _name = 'community.school.student' _description = 'School Student' _order = 'id desc' partner_id = fields.Many2one('res.partner', string='Student', required=True) parent_partner_id = fields.Many2one('res.partner', string='Parent/Guardian', required=True) date_of_birth = fields.Date() age = fields.Integer(compute='_compute_age') proficiency = fields.Selection( [('beginner', 'Beginner'), ('intermediate', 'Intermediate'), ('advanced', 'Advanced')], default='beginner', ) grade_ref = fields.Char(string='Grade', help="Free-text grade reference, e.g. 'Grade 3'.") health_notes = fields.Text() emergency_contact_name = fields.Char() emergency_contact_phone = fields.Char() enrollment_ids = fields.One2many('community.school.enrollment', 'student_id') @api.depends('date_of_birth') def _compute_age(self): today = fields.Date.context_today(self) for student in self: if student.date_of_birth: student.age = relativedelta(today, student.date_of_birth).years else: student.age = 0