The FieldMapperFieldMapperLineRel class represents a relational table that establishes a many-to-many relationship between FieldMapper and FieldMapperLine.

class FieldMapperFieldMapperLineRel(models.Model):
    _name = 'field.mapper.field.mapper.line'
    _description = 'Field Mapper Relation'
    _table = 'field_mapper_field_mapper_line_rel'
    _rec_name = 'field_mapper_id'

    def _default_sequence(self):
        record = self.search([], limit=1, order="sequence DESC")
        if record:
            return record.sequence + 5
        return 10000

    field_mapper_id = fields.Many2one(
        comodel_name='field.mapper',
        string='Field Mapper',
        ondelete='cascade',
        required=True
    )
    field_mapper_line_id = fields.Many2one(
        comodel_name='field.mapper.line',
        string='Field Mapper Line',
        ondelete='cascade',
        required=True
    )
    sequence = fields.Integer(string='Sequence', required=True, index=True, default=_default_sequence)

    _sql_constraints = [
        ('field_mapper_field_line_mapper_uniq', 'unique (field_mapper_line_id, field_mapper_id)',
            'Field Mapper Line and Field Mapper must be unique!'),
    ]
class FieldMapper(models.Model):
    _name = 'field.mapper'
    _description = 'Field mapper'

    technical_name = fields.Char(string='Technical Name', required=True)
    name = fields.Char(string='Name', required=True)

    field_mapper_line_ids = fields.Many2many(
        comodel_name='field.mapper.line',
        relation='field_mapper_field_mapper_line_rel',
        column1='field_mapper_id',
        column2='field_mapper_line_id',
        string='Field Mapper Line'
    )
    field_mapper_ids = fields.One2many(
        comodel_name='field.mapper.field.mapper.line',
        inverse_name='field_mapper_id',
        string='Field Rel'
    )
class FieldMapperLine(models.Model):
    _name = 'field.mapper.line'
    _description = 'Field Mapper Line'

    field_mapper_ids = fields.Many2many(
        comodel_name='field.mapper',
        relation='field_mapper_field_mapper_line_rel',
        column1='field_mapper_line_id',
        column2='field_mapper_id',
        string='Field Mapper'
    )
    field_mapper_line_ids = fields.One2many(
        comodel_name='field.mapper.field.mapper.line',
        inverse_name='field_mapper_line_id',
        string='Field Rel'
    )

    target_field = fields.Char(string='Target Field', required=True)