MCPcopy
hub / github.com/django/django / collect

Method collect

django/contrib/admin/utils.py:204–220  ·  view source on GitHub ↗
(self, objs, source=None, source_attr=None, **kwargs)

Source from the content-addressed store, hash-verified

202 self.edges.setdefault(source, []).append(target)
203
204 def collect(self, objs, source=None, source_attr=None, **kwargs):
205 for obj in objs:
206 if source_attr and not source_attr.endswith("+"):
207 related_name = source_attr % {
208 "class": source._meta.model_name,
209 "app_label": source._meta.app_label,
210 }
211 self.add_edge(getattr(obj, related_name), obj)
212 else:
213 self.add_edge(None, obj)
214 self.model_objs[obj._meta.model].add(obj)
215 try:
216 return super().collect(objs, source_attr=source_attr, **kwargs)
217 except models.ProtectedError as e:
218 self.protected.update(e.protected_objects)
219 except models.RestrictedError as e:
220 self.protected.update(e.restricted_objects)
221
222 def related_objects(self, related_model, related_fields, objs):
223 qs = super().related_objects(related_model, related_fields, objs)

Calls 3

add_edgeMethod · 0.95
addMethod · 0.45
updateMethod · 0.45