@@ -131,7 +131,9 @@ def __new__(cls, *args, **kwargs):
131131 return super (BaseSerializer , cls ).__new__ (cls )
132132
133133 def __deepcopy__ (self , memo = {}):
134- return self .__class__ (instance = self .instance , data = self .data , source = self .source , allow_none = self .allow_none )
134+ return self .__class__ (instance = self .instance , data = self .data ,
135+ source = self .source , allow_none = self .allow_none ,
136+ required = self .required )
135137
136138 @classmethod
137139 def many_init (cls , * args , ** kwargs ):
@@ -384,8 +386,15 @@ def _field_validation(self, fields_dict, data):
384386 for _ , field_obj in six .iteritems (fields_dict ):
385387 field_name = field_obj ._get_field_name ()
386388 try :
389+ # Check by empty for nested serializer fields
390+ is_empty , _field_data = field_obj .validate_empty_values (data .get (field_name , None ))
391+ if is_empty :
392+ if field_name in data :
393+ validated_data [field_name ] = _field_data
394+ continue
395+
387396 # Transform to python type and validate each field.
388- validated_val = field_obj .run_validation (data . get ( field_name , None ) )
397+ validated_val = field_obj .run_validation (_field_data )
389398
390399 # Now manual validation.
391400 validated_val = self ._manual_validate_method (field_name , validated_val )
@@ -538,7 +547,8 @@ def __deepcopy__(self, memo={}):
538547 return self .__class__ (
539548 instance = self .instance , data = self .data ,
540549 child = self .child , allow_empty = self .allow_empty ,
541- source = self .source , allow_none = self .allow_none
550+ source = self .source , allow_none = self .allow_none ,
551+ required = self .required
542552 )
543553
544554 def to_internal_value (self , data ):
0 commit comments