@@ -131,7 +131,9 @@ def __new__(cls, *args, **kwargs):
131
131
return super (BaseSerializer , cls ).__new__ (cls )
132
132
133
133
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 )
135
137
136
138
@classmethod
137
139
def many_init (cls , * args , ** kwargs ):
@@ -384,8 +386,15 @@ def _field_validation(self, fields_dict, data):
384
386
for _ , field_obj in six .iteritems (fields_dict ):
385
387
field_name = field_obj ._get_field_name ()
386
388
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
+
387
396
# 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 )
389
398
390
399
# Now manual validation.
391
400
validated_val = self ._manual_validate_method (field_name , validated_val )
@@ -538,7 +547,8 @@ def __deepcopy__(self, memo={}):
538
547
return self .__class__ (
539
548
instance = self .instance , data = self .data ,
540
549
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
542
552
)
543
553
544
554
def to_internal_value (self , data ):
0 commit comments