aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorjedavis83@gmail.com2012-11-20 23:09:47 -0800
committerjedavis83@gmail.com2012-11-20 23:09:47 -0800
commit8b0561c57e4684ac440d36b39069a6c7f6168a02 (patch)
tree03ebf911212bb6ecc15eaeed4dd696f160c13231 /rest_framework/serializers.py
parent3268c67343f6fc6364a0127a7bfabeb907a4751d (diff)
downloaddjango-rest-framework-8b0561c57e4684ac440d36b39069a6c7f6168a02.tar.bz2
Cache all fields on serializer init, not just default fields.
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py15
1 files changed, 5 insertions, 10 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index f7918c4c..efd564d4 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -103,7 +103,7 @@ class BaseSerializer(Field):
self.init_data = data
self.init_files = files
self.object = instance
- self.default_fields = self.get_default_fields()
+ self.serialize_fields = self.get_fields()
self._data = None
self._files = None
@@ -134,7 +134,7 @@ class BaseSerializer(Field):
field.initialize(parent=self, field_name=key)
# Add in the default fields
- for key, val in self.default_fields.items():
+ for key, val in self.get_default_fields().items():
if key not in ret:
ret[key] = val
@@ -181,8 +181,7 @@ class BaseSerializer(Field):
ret = self._dict_class()
ret.fields = {}
- fields = self.get_fields()
- for field_name, field in fields.items():
+ for field_name, field in self.serialize_fields.items():
key = self.get_field_key(field_name)
value = field.field_to_native(obj, field_name)
ret[key] = value
@@ -194,9 +193,8 @@ class BaseSerializer(Field):
Core of deserialization, together with `restore_object`.
Converts a dictionary of data into a dictionary of deserialized fields.
"""
- fields = self.get_fields()
reverted_data = {}
- for field_name, field in fields.items():
+ for field_name, field in self.serialize_fields.items():
try:
field.field_from_native(data, files, field_name, reverted_data)
except ValidationError as err:
@@ -208,10 +206,7 @@ class BaseSerializer(Field):
"""
Run `validate_<fieldname>()` and `validate()` methods on the serializer
"""
- # TODO: refactor this so we're not determining the fields again
- fields = self.get_fields()
-
- for field_name, field in fields.items():
+ for field_name, field in self.serialize_fields.items():
try:
validate_method = getattr(self, 'validate_%s' % field_name, None)
if validate_method: