Traversing through Recordset
                            Traversing through Recordset:
                            A record set can be simply defined as a set of similar objects or records. It is easier
                                to access any field value from a single record or a record set of length 1.When it comes
                                to multiple records it is not possible to access any field value of the record simply by
                                referring the field name. If that record set has length more than 1, then it will raise
                                an error when trying to access any field value by dot method ( Eg:
                                self.partner_ids.name). 
                            As an example consider the model res.partner which holds all the records of Contacts
                                saved in our Odoo Database. If we wan’t to access the name of a contact record, then
                                simply we can use partner.nameif partner variable holds a res.partner
                                record. It is not possible with more than one record in the partner record set. 
                            mapped() method can be used to traverse through a record set of length
                                more than one. Let’s discuss the method with the help of an example.
                            Consider 2 models student.parent and student.student
                                which holds the records of Parents and Students of an educational institution.
                            from odoo import fields, models
class Student(models.Model):
   _name = "student.student"
   _description = "Student"
   name = fields.Char(string="Name", required=True)
   phone = fields.Char(string="Phone Number")
   email = fields.Char(string="Email")
   partner_id = fields.Many2one('res.partner', string="Partner", required=True)
   date = fields.Date(string="Date", default=fields.Date.today())
   parent_id = fields.Many2one('student.parent', string="Parent")
                            from odoo import fields, models
class Parent(models.Model):
   _name = "student.parent"
   _description = "Parent"
   name = fields.Char(string="Name", required=True)
   phone = fields.Char(string="Phone Number")
   email = fields.Char(string="Email")
   partner_id = fields.Many2one('res.partner', string="Partner", required=True)
   date = fields.Date(string="Date", default=fields.Date.today())
   student_ids = fields.Many2many('student.student', string="Students")
                            Parent model contains a relational field to store all students related named
                                student_ids.  If the student_ids field have a single student record
                                then it is possible to get the name of corresponding student by referring
                                student_ids.name .. But if there are multiple student records in
                                student_ids field, it is impossible. For getting all the name of
                                students define a method called get_student_name().  Use
                                mapped()  method to get all names of students in a recordset of
                                student.student.
                            
                            def _get_students_name(self, parents):
   names = parents.mapped('student_ids.name')
                            Here the mapped(path) method will traverse the fields of the recordset,
                                where the path will be a string that contains field name separated by dots.
                                mapped()  method will produce a new recordset that contains all fields
                                related to that field in the path to all elements in the current recordset.This
                                recordset is created for each field given in the path.Here in this example, a new
                                recordset will be created for the fields student_ids and name. 
                            names variable will contain a list of all names of students.This can
                                also be used to return a recordset. If a relational field is given to the path of
                                mapped() method rather than any basic type field, it will return a
                                recordset. In the case of basic field mapped() will be returning a
                                python list. 
                            One thing to keep in mind is that it may not be efficient to use
                                mapped() as it operates in memory inside the Odoo server by repeatedly
                                traversing relations and therefore making SQL queries.search() method
                                with appropriate domain will make more sense in such cases.