django_deletion_defaultdict
files: 1 | +12/-13
Option A: refactor(django/db): Counter defaultdict partial
Option B: Used defaultdict in deletion.Collector.
Which commit message is better?
Anchors: Counterself.dataself.field_updates
Files
| Path |
| django/db/models/deletion.py |
Diff
diff --git a/django/db/models/deletion.py b/django/db/models/deletion.py
@@
-from collections import Counter
+from collections import Counter, defaultdict
+from functools import partial
@@
- # Initially, {model: {instances}}, later values become lists.
- self.data = {}
- self.field_updates = {}
+ # Initially, {model: {instances}}, later values become lists.
+ self.data = defaultdict(set)
+ self.field_updates = defaultdict(partial(defaultdict, set))
@@
- # {model: {models}}
- self.dependencies = {}
+ # {model: {models}}
+ self.dependencies = defaultdict(set)
@@
- instances = self.data.setdefault(model, set())
+ instances = self.data[model]
@@
- self.dependencies.setdefault(
- source._meta.concrete_model, set()
- ).add(model._meta.concrete_model)
+ self.dependencies[source._meta.concrete_model].add(
+ model._meta.concrete_model
+ )
@@
- self.field_updates.setdefault(
- model, {}
- ).setdefault((field, value), set()).update(objs)
+ self.field_updates[model][field, value].update(objs)