@@ -19,7 +19,7 @@ def __init__(self, pattern, parent_pattern=None):
1919 self .errors = None
2020 self .serializer_class = self .__get_serializer_class__ ()
2121 if self .serializer_class :
22- self .serializer = self .serializer_class ()
22+ self .serializer = self .__get_serializer__ ()
2323 self .fields = self .__get_serializer_fields__ (self .serializer )
2424 self .fields_json = self .__get_serializer_fields_json__ ()
2525
@@ -40,6 +40,12 @@ def __get_permissions_class__(self):
4040 for perm_class in self .pattern .callback .cls .permission_classes :
4141 return perm_class .__name__
4242
43+ def __get_serializer__ (self ):
44+ try :
45+ return self .serializer_class ()
46+ except KeyError as e :
47+ self .errors = e
48+
4349 def __get_serializer_class__ (self ):
4450 if hasattr (self .callback .cls , 'serializer_class' ):
4551 return self .callback .cls .serializer_class
@@ -51,19 +57,14 @@ def __get_serializer_fields__(self, serializer):
5157 fields = []
5258
5359 if hasattr (serializer , 'get_fields' ):
54- try :
55- for key , field in serializer .get_fields ().items ():
56- sub_fields = self .__get_serializer_fields__ (field ) if isinstance (field , BaseSerializer ) else None
57- fields .append ({
58- "name" : key ,
59- "type" : str (field .__class__ .__name__ ),
60- "sub_fields" : sub_fields ,
61- "required" : field .required
62- })
63- except KeyError as e :
64- self .errors = e
65- fields = []
66-
60+ for key , field in serializer .get_fields ().items ():
61+ sub_fields = self .__get_serializer_fields__ (field ) if isinstance (field , BaseSerializer ) else None
62+ fields .append ({
63+ "name" : key ,
64+ "type" : str (field .__class__ .__name__ ),
65+ "sub_fields" : sub_fields ,
66+ "required" : field .required
67+ })
6768 # FIXME:
6869 # Show more attibutes of `field`?
6970
0 commit comments