diff options
| author | Giannis Terzopoulos <terzo.giannis@gmail.com> | 2024-03-08 10:33:18 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2024-03-08 10:33:18 +0100 |
| commit | 74f7fe3f3dd9725e92aa079c5f54b65d66db28de (patch) | |
| tree | 66d9789724dab375eea52242a80bd62683ee3a3a | |
| parent | 0c690c60012e6a2f0cde0fc564c55054c465d02f (diff) | |
Optimized Model.refresh_from_db(fields=...) by using a set.
| -rw-r--r-- | django/db/models/base.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index 9c8ab7bfa6..243093da44 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -691,8 +691,8 @@ class Model(AltersData, metaclass=ModelBase): self._prefetched_objects_cache = {} else: prefetched_objects_cache = getattr(self, "_prefetched_objects_cache", ()) - fields = list(fields) - for field in list(fields): + fields = set(fields) + for field in fields.copy(): if field in prefetched_objects_cache: del prefetched_objects_cache[field] fields.remove(field) @@ -717,11 +717,11 @@ class Model(AltersData, metaclass=ModelBase): if fields is not None: db_instance_qs = db_instance_qs.only(*fields) elif deferred_fields: - fields = [ + fields = { f.attname for f in self._meta.concrete_fields if f.attname not in deferred_fields - ] + } db_instance_qs = db_instance_qs.only(*fields) db_instance = db_instance_qs.get() |
