Skip to content

Commit c38fe52

Browse files
Handle KeyError in ApiEndpoint
1 parent 935a384 commit c38fe52

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

rest_framework_docs/api_endpoint.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)