Exemplo n.º 1
0
 def _fill_related_many_to_many_cache(self):
     cache = SortedDict()
     parent_list = self.get_parent_list()
     for parent in self.parents:
         for obj, model in parent._meta.get_all_related_m2m_objects_with_model():
             if obj.field.creation_counter < 0 and obj.model not in parent_list:
                 continue
             if not model:
                 cache[obj] = parent
             else:
                 cache[obj] = model
     for klass in get_models(only_installed=False):
         for f in klass._meta.local_many_to_many:
             if f.rel and not isinstance(f.rel.to, six.string_types) and self == f.rel.to._meta:
                 cache[RelatedObject(f.rel.to, klass, f)] = None
     if app_cache_ready():
         self._related_many_to_many_cache = cache
     return cache
Exemplo n.º 2
0
 def init_name_map(self):
     """
     Initialises the field name -> field object mapping.
     """
     cache = {}
     # We intentionally handle related m2m objects first so that symmetrical
     # m2m accessor names can be overridden, if necessary.
     for f, model in self.get_all_related_m2m_objects_with_model():
         cache[f.field.related_query_name()] = (f, model, False, True)
     for f, model in self.get_all_related_objects_with_model():
         cache[f.field.related_query_name()] = (f, model, False, False)
     for f, model in self.get_m2m_with_model():
         cache[f.name] = (f, model, True, True)
     for f, model in self.get_fields_with_model():
         cache[f.name] = (f, model, True, False)
     if app_cache_ready():
         self._name_map = cache
     return cache