diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 02c24b70e..8e7206fd8 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -362,10 +362,15 @@ class Serializer(BaseSerializer): @cached_property def _writable_fields(self): - return [ - field for field in self.fields.values() - if (not field.read_only) or (field.default is not empty) - ] + ret = [] + for field in self.fields.values(): + if re.compile("\_set$").findall(field.source): + for field in field.child._writable_fields: + ret.append(field) + continue + if (not field.read_only) or (field.default is not empty): + ret.append(field) + return ret @cached_property def _readable_fields(self):