File tree Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ any parts of the framework not mentioned in the documentation should generally b
1919
2020*  Ensured that interpreting ` include `  query parameter is done in internal Python naming.
2121  This adds full support for using multipart field names for includes while configuring ` JSON_API_FORMAT_FIELD_NAMES ` .
22+ *  Ensured that sparse fieldset fully supports ` JSON_API_FORMAT_FIELD_NAMES ` .
2223
2324### Removed  
2425
Original file line number Diff line number Diff line change 2626    get_resource_type_from_instance ,
2727    get_resource_type_from_model ,
2828    get_resource_type_from_serializer ,
29+     undo_format_field_name ,
2930)
3031
3132
@@ -89,7 +90,10 @@ def _readable_fields(self):
8990                    sparse_fieldset_query_param 
9091                )
9192                if  sparse_fieldset_value  is  not None :
92-                     sparse_fields  =  sparse_fieldset_value .split ("," )
93+                     sparse_fields  =  [
94+                         undo_format_field_name (sparse_field )
95+                         for  sparse_field  in  sparse_fieldset_value .split ("," )
96+                     ]
9397                    return  (
9498                        field 
9599                        for  field  in  readable_fields 
Original file line number Diff line number Diff line change 11import  pytest 
22from  django .db  import  models 
3+ from  rest_framework .request  import  Request 
34from  rest_framework .utils  import  model_meta 
45
56from  rest_framework_json_api  import  serializers 
@@ -84,3 +85,22 @@ class Meta:
8485        "verified" ,
8586        "uuid" ,
8687    ]
88+ 
89+ 
90+ def  test_readable_fields_with_sparse_fields (client , rf , settings ):
91+     class  TestSerializer (serializers .Serializer ):
92+         name  =  serializers .CharField ()
93+         value  =  serializers .CharField ()
94+         multi_part_name  =  serializers .CharField ()
95+ 
96+         class  Meta :
97+             resource_name  =  "test" 
98+ 
99+     settings .JSON_API_FORMAT_FIELD_NAMES  =  "camelize" 
100+     request  =  Request (rf .get ("/test/" , {"fields[test]" : "value,multiPartName" }))
101+     context  =  {"request" : request }
102+     serializer  =  TestSerializer (context = context )
103+     assert  [field .field_name  for  field  in  serializer ._readable_fields ] ==  [
104+         "value" ,
105+         "multi_part_name" ,
106+     ]
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments