How to use _many_to_many_pivot method in autotest

Best Python code snippet using autotest_python

model_logic.py

Source:model_logic.py Github

copy

Full Screen

...201 related_model, field)202 for field in related_model._meta.many_to_many:203 if self._is_relation_to(field, self.model):204 # many-to-many205 return self._many_to_many_pivot(206 base_objects_by_id, related_model, field.m2m_db_table(),207 field.m2m_reverse_name(), field.m2m_column_name())208 # maybe this model has the many-to-many field209 for field in self.model._meta.many_to_many:210 if self._is_relation_to(field, related_model):211 return self._many_to_many_pivot(212 base_objects_by_id, related_model, field.m2m_db_table(),213 field.m2m_column_name(), field.m2m_reverse_name())214 raise ValueError('%s has no relation to %s' %215 (related_model, self.model))216 def _many_to_one_pivot(self, base_objects_by_id, related_model,217 foreign_key_field):218 """219 @returns a pivot iterator - see _get_pivot_iterator()220 """221 filter_data = {foreign_key_field.name + '__pk__in':222 base_objects_by_id.keys()}223 for related_object in related_model.objects.filter(**filter_data):224 fresh_base_object = getattr(related_object, foreign_key_field.name)225 # lookup base object in the dict -- we need to return instances from226 # the dict, not fresh instances of the same models227 base_object = base_objects_by_id[fresh_base_object._get_pk_val()]228 yield base_object, related_object229 def _query_pivot_table(self, base_objects_by_id, pivot_table,230 pivot_from_field, pivot_to_field):231 """232 @param id_list list of IDs of self.model objects to include233 @param pivot_table the name of the pivot table234 @param pivot_from_field a field name on pivot_table referencing235 self.model236 @param pivot_to_field a field name on pivot_table referencing the237 related model.238 @returns pivot list of IDs (base_id, related_id)239 """240 query = """241 SELECT %(from_field)s, %(to_field)s242 FROM %(table)s243 WHERE %(from_field)s IN (%(id_list)s)244 """ % dict(from_field=pivot_from_field,245 to_field=pivot_to_field,246 table=pivot_table,247 id_list=','.join(str(id_) for id_248 in base_objects_by_id.iterkeys()))249 cursor = readonly_connection.connection().cursor()250 cursor.execute(query)251 return cursor.fetchall()252 def _many_to_many_pivot(self, base_objects_by_id, related_model,253 pivot_table, pivot_from_field, pivot_to_field):254 """255 @param pivot_table: see _query_pivot_table256 @param pivot_from_field: see _query_pivot_table257 @param pivot_to_field: see _query_pivot_table258 @returns a pivot iterator - see _get_pivot_iterator()259 """260 id_pivot = self._query_pivot_table(base_objects_by_id, pivot_table,261 pivot_from_field, pivot_to_field)262 all_related_ids = list(set(related_id for base_id, related_id263 in id_pivot))264 related_objects_by_id = related_model.objects.in_bulk(all_related_ids)265 for base_id, related_id in id_pivot:266 yield base_objects_by_id[base_id], related_objects_by_id[related_id]...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run autotest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful