Cached model field_names in Python Deserializer.

This commit is contained in:
Andrey Kuzmin 2015-10-23 05:29:46 +03:00 committed by Tim Graham
parent 10ace52a41
commit a1b9737aea
1 changed files with 5 additions and 1 deletions

View File

@ -89,6 +89,7 @@ def Deserializer(object_list, **options):
"""
db = options.pop('using', DEFAULT_DB_ALIAS)
ignore = options.pop('ignorenonexistent', False)
field_names_cache = {} # Model: <list of field_names>
for d in object_list:
# Look up the model and starting build a dict of data for it.
@ -106,7 +107,10 @@ def Deserializer(object_list, **options):
except Exception as e:
raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), None)
m2m_data = {}
field_names = {f.name for f in Model._meta.get_fields()}
if Model not in field_names_cache:
field_names_cache[Model] = {f.name for f in Model._meta.get_fields()}
field_names = field_names_cache[Model]
# Handle each field
for (field_name, field_value) in six.iteritems(d["fields"]):