File tree Expand file tree Collapse file tree 3 files changed +22
-0
lines changed Expand file tree Collapse file tree 3 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -507,6 +507,11 @@ def data(self):
507
507
@property
508
508
def errors (self ):
509
509
ret = super (Serializer , self ).errors
510
+ if isinstance (ret , list ) and len (ret ) == 1 and ret [0 ].code == 'null' :
511
+ # Edge case. Provide a more descriptive error than
512
+ # "this field may not be null", when no data is passed.
513
+ detail = ErrorDetail ('No data provided' , code = 'null' )
514
+ ret = {api_settings .NON_FIELD_ERRORS_KEY : [detail ]}
510
515
return ReturnDict (ret , serializer = self )
511
516
512
517
@@ -700,6 +705,11 @@ def data(self):
700
705
@property
701
706
def errors (self ):
702
707
ret = super (ListSerializer , self ).errors
708
+ if isinstance (ret , list ) and len (ret ) == 1 and ret [0 ].code == 'null' :
709
+ # Edge case. Provide a more descriptive error than
710
+ # "this field may not be null", when no data is passed.
711
+ detail = ErrorDetail ('No data provided' , code = 'null' )
712
+ ret = {api_settings .NON_FIELD_ERRORS_KEY : [detail ]}
703
713
if isinstance (ret , dict ):
704
714
return ReturnDict (ret , serializer = self )
705
715
return ReturnList (ret , serializer = self )
Original file line number Diff line number Diff line change @@ -62,6 +62,12 @@ def create(validated_data):
62
62
with pytest .raises (AssertionError ):
63
63
serializer .save ()
64
64
65
+ def test_validate_none_data (self ):
66
+ data = None
67
+ serializer = self .Serializer (data = data )
68
+ assert not serializer .is_valid ()
69
+ assert serializer .errors == {'non_field_errors' : ['No data provided' ]}
70
+
65
71
66
72
class TestValidateMethod :
67
73
def test_non_field_error_validate_method (self ):
Original file line number Diff line number Diff line change @@ -41,6 +41,12 @@ def test_nested_serialize_empty(self):
41
41
serializer = self .Serializer ()
42
42
assert serializer .data == expected_data
43
43
44
+ def test_nested_serialize_no_data (self ):
45
+ data = None
46
+ serializer = self .Serializer (data = data )
47
+ assert not serializer .is_valid ()
48
+ assert serializer .errors == {'non_field_errors' : ['No data provided' ]}
49
+
44
50
45
51
class TestNotRequiredNestedSerializer :
46
52
def setup (self ):
You can’t perform that action at this time.
0 commit comments