コード例 #1
0
ファイル: __init__.py プロジェクト: modamania/otdohni
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
コード例 #2
0
ファイル: lib.py プロジェクト: gvladimirwork/2test
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
コード例 #3
0
 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
コード例 #4
0
ファイル: EstrelaModel.py プロジェクト: bichhawat/estrela
 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
コード例 #5
0
    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()
コード例 #6
0
    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
コード例 #7
0
 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