from odoo import api, fields, models class McStudent(models.Model): _name = "mc.student" _inherit = ["mail.thread"] _description = "Student" _order = "name" _rec_name = "name" partner_id = fields.Many2one( "res.partner", string="Contact", required=True, ondelete="restrict", ) admission_no = fields.Char(string="Admission No.", copy=False, tracking=True) name = fields.Char(string="Name", required=True, tracking=True) dob = fields.Date(string="Date of Birth") gender = fields.Selection( [("male", "Male"), ("female", "Female"), ("other", "Other")], string="Gender", ) admission_date = fields.Date(string="Admission Date", default=fields.Date.context_today) photo = fields.Binary(string="Photo", attachment=True) status = fields.Selection( [ ("active", "Active"), ("inactive", "Inactive"), ("alumni", "Alumni"), ("withdrawn", "Withdrawn"), ], string="Status", default="active", required=True, tracking=True, ) blood_group = fields.Selection( [ ("a+", "A+"), ("a-", "A-"), ("b+", "B+"), ("b-", "B-"), ("ab+", "AB+"), ("ab-", "AB-"), ("o+", "O+"), ("o-", "O-"), ], string="Blood Group", ) address_id = fields.Many2one( "res.partner", string="Address", help="A specific address contact for this student, if different from the guardian's.", ) guardian_link_ids = fields.One2many( "mc.student.guardian", "student_id", string="Guardians", ) enrollment_ids = fields.One2many("mc.enrollment", "student_id", string="Enrollments") _partner_uniq = models.Constraint( "unique(partner_id)", "This contact already has a student record.", ) _admission_no_uniq = models.Constraint( "unique(admission_no)", "A student with this admission number already exists.", ) @api.model_create_multi def create(self, vals_list): for vals in vals_list: if not vals.get("admission_no"): vals["admission_no"] = self.env["ir.sequence"].next_by_code( "mc.student.admission_no" ) return super().create(vals_list)