def load_related_m2m(object_list, field): select_fields = ['pk'] #related_field = object_list.model._meta.get_field(field) if not object_list: return model = object_list[0].__class__ related_field = model._meta.get_field(field) related_model = related_field.rel.to cache_name = 'all_%s' % field for f in related_model._meta.local_fields: select_fields.append('%s%s%s' % (field, LOOKUP_SEP, f.column)) query = sql.Query(model) query.add_fields(select_fields) query.add_filter(('pk__in', [obj.pk for obj in object_list])) related_dict = {} cursor = connection.cursor() cursor.execute(query.__str__()) for row in cursor.fetchall(): if row[2]: related_dict.setdefault(row[0], []).append(related_model(*row[1:])) for obj in object_list: try: setattr(obj, cache_name, related_dict[obj.pk]) except KeyError: setattr(obj, cache_name, []) return object_list
def load_related_m2m(object_list, field): select_fields = ['pk'] related_field = object_list.models.get_field(field) related_model = related_field.rel.to cache_name = 'all_%s' % field for f in related_model._meta.local_fields: select_fields.append('%s%s%s' % (field, LOOKUP_SEP, f.column)) query = sql.Query(object_list.model, connection) query.add_fields(select_fields) query.add_filter(('pk__in', [obj.pk for obj in object_list])) related_dict = {} for row in query.results_iter(): if row[2]: related_dict.setdefault(row[0], []).append(related_model(*row[1:])) for obj in object_list: try: setattr(obj, cache_name, related_dict[obj.pk]) except KeyError: setattr(obj, cache_name, []) return object_list
def __init__(self, model=None, query=None, using=None): self.model = model # EmptyQuerySet instantiates QuerySet with model as None self._db = using self.query = query or sql.Query(self.model) self._result_cache = None self._iter = None self._sticky_filter = False
def __init__(self, model=None, query=None, using=None, hints=None): self.model = model self._db = using self._hints = hints or {} self.query = query or sql.Query(self.model) self._result_cache = None self._sticky_filter = False self._for_write = False self._prefetch_related_lookups = () self._prefetch_done = False self._known_related_objects = {} # {rel_field: {pk: rel_obj}} self._iterable_class = ModelIterable self._fields = None
def __init__(self, model=None, db_list=None, multidbquerysets=None, filter_args=(), filter_kwargs={}, **kwargs): self.model = model self._db_list = db_list self.multidbquerysets = [] self.query = sql.Query(self.model) self.__multidbquerysets = multidbquerysets self.index = 0 self.filter_args = filter_args self.filter_kwargs = filter_kwargs self._set_multidbquerysets()
def __init__(self, *args, **kwargs): self.kwargs = kwargs self._set_querysets(args) self.model = args[0].model self.query = args[0].query or sql.Query(self.model) self.verbose_name = args[0].model._meta.verbose_name self.verbose_name_plural = args[0].model._meta.verbose_name_plural # Some information necessary for properly iterating through a QuerySet. self._order_by = [] self._standard_ordering = True self._low_mark, self._high_mark = 0, None self._prefetch_related_lookups = () # not completed self._iterable_class = QuerySequenceIterable self._result_cache = None
def __init__(self, model=None, query=None): self.model = model self.query = query or sql.Query(self.model, connection) self._result_cache = None self._iter = None self._sticky_filter = False