From a1b9737aeaed4e218e264369e2f6591c8c03aafd Mon Sep 17 00:00:00 2001 From: Andrey Kuzmin Date: Fri, 23 Oct 2015 05:29:46 +0300 Subject: [PATCH] Cached model field_names in Python Deserializer. --- django/core/serializers/python.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index b64169bb62..09a5438861 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -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: 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"]):