Reputation: 11
I have 3 models that relate to 2 many2many fields as follows
class ModelA(models.Model):
_name = 'model.a'
name = fields.Char("ModelA")
class ModelB(models.Model):
_name = 'model.b'
name = fields.Char("ModelB")
model_a_ids = fields.Many2many('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):
and I am trying to get all the model.a that belong to model c in the search_all_model_a method
Upvotes: 0
Views: 894
Reputation: 14768
Presumptions:
a) search_all_model_a
belongs to class ModelC
b) self
of search_all_model_a
can be a multi recordset of ModelC
Sotution:
def search_all_model_a(self):
return self.mapped('model_b_ids').mapped('model_a_ids')
Or the long form with some comments:
def search_all_model_a(self):
# empty model.a and model.b recordset
model_a_result = self.env['model.a']
model_b_temp_result = self.env['model.b']
# first get all model.b records
for model_c_record in self:
# add linked model.b records
model_b_temp_result |= model_c_record.model_b_ids
# and then get all model.a records from the model.b records
for model_b_record in model_b_temp_result:
# add linked model.a records
model_a_result |= model_b_record.model_a_ids
return model_a_result
Upvotes: 1