From f5d6925312761a03d52e3e9be15c8644f38db3fe Mon Sep 17 00:00:00 2001 From: sol HYUN Date: Tue, 6 Dec 2016 01:00:51 +0900 Subject: [PATCH] Modify '_writable_fields Method' Reinforce against errors. --- rest_framework/serializers.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 9e47f4868..e93be3571 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -366,8 +366,13 @@ class Serializer(BaseSerializer): ret = [] for field in self.fields.values(): if re.compile("\_set$").findall(field.source): - for field in field.child._writable_fields: - ret.append(field) + try: + for field in field.child._writable_fields: + if (not field.read_only) or (field.default is not empty): + ret.append(field) + except: + if (not field.read_only) or (field.default is not empty): + ret.append(field) continue if (not field.read_only) or (field.default is not empty): ret.append(field) @@ -439,7 +444,7 @@ class Serializer(BaseSerializer): raise ValidationError(detail=as_serializer_error(exc)) return value - + def to_internal_value(self, data): """ Dict of native values <- Dict of primitive datatypes.