es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo aplicar la función de búsqueda en un campo Many2many en Odoo 14.

Tengo 3 modelos que se relacionan con 2 campos many2many de la siguiente manera:

class ModelA(models.Model):
    _name = 'model.a'

    name = fields.Char("ModelA")

class ModelB(models.Model):
    _name = 'model.b'

    name = fields.Char("ModelB")
    modela_ids = fields.Many2many('model.a')

class ModelC(models.Model):
    _name = 'model.c'

    name = fields.Char("ModelC")
    modelb_ids = fields.Many2many('model.b')

def search_all_modela(self):

y estoy tratando de obtener todos los model.a que pertenecen al modelo c en el método search_all_modela.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener todas las instancias de model.a que pertenecen a model.c, puedes utilizar un método de search en ModelA que filtre en base al campo model_b_ids de las instancias relacionadas de ModelB. Aquí tienes un ejemplo de implementación del método search_all_model_a:

    class ModelC(models.Model):
        _name = 'model.c'
    
        name = fields.Char("ModelC")
        model_b_ids = fields.Many2many('model.b')
    
        def search_all_model_a(self):
            model_b_records = self.env['model.b'].search([('id', 'in', self.model_b_ids.ids)])
            model_a_records = self.env['model.a'].search([('model_b_ids', 'in', model_b_records.ids)])
            return model_a_records
    

    Este método primero busca todas las instancias relacionadas de ModelB y luego utiliza sus ids para filtrar las instancias de model_a que están relacionadas con ellas. Los registros de model.a resultantes se devuelven como una lista.

Comments are closed.