Skip to content

Commit 6b857ef

Browse files
committed
Support async view methods in extend_schema_view.
1 parent 01ec586 commit 6b857ef

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

drf_spectacular/drainage.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,12 @@ def get_view_method_names(view, schema=None) -> List[str]:
182182
return [
183183
item for item in dir(view) if callable(getattr(view, item)) and (
184184
item in view.http_method_names
185-
or item in schema.method_mapping.values()
186-
or item == 'list'
185+
or (
186+
item in schema.async_method_mapping.values()
187+
if view.view_is_async
188+
else item in schema.method_mapping.values()
189+
)
190+
or item == ('alist' if view.view_is_async else 'list')
187191
or hasattr(getattr(view, item), 'mapping')
188192
)
189193
]

drf_spectacular/openapi.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ class AutoSchema(ViewInspector):
5757
'patch': 'partial_update',
5858
'delete': 'destroy',
5959
}
60+
async_method_mapping = {
61+
'get': 'aretrieve',
62+
'post': 'acreate',
63+
'put': 'aupdate',
64+
'patch': 'partial_aupdate',
65+
'delete': 'adestroy',
66+
}
6067

6168
def get_operation(
6269
self,

0 commit comments

Comments
 (0)