Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
d2286ba6
Commit
d2286ba6
authored
Aug 21, 2017
by
Carlton Gibson
Committed by
GitHub
Aug 21, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5326 from limdauto/limdauto-patch-1
Fix introspection of list field in schema
parents
4d5e846c
56021f9e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
1 deletions
+24
-1
rest_framework/schemas.py
+1
-1
tests/test_schemas.py
+23
-0
No files found.
rest_framework/schemas.py
View file @
d2286ba6
...
@@ -30,7 +30,7 @@ def field_to_schema(field):
...
@@ -30,7 +30,7 @@ def field_to_schema(field):
title
=
force_text
(
field
.
label
)
if
field
.
label
else
''
title
=
force_text
(
field
.
label
)
if
field
.
label
else
''
description
=
force_text
(
field
.
help_text
)
if
field
.
help_text
else
''
description
=
force_text
(
field
.
help_text
)
if
field
.
help_text
else
''
if
isinstance
(
field
,
serializers
.
ListSerializer
):
if
isinstance
(
field
,
(
serializers
.
ListSerializer
,
serializers
.
ListField
)
):
child_schema
=
field_to_schema
(
field
.
child
)
child_schema
=
field_to_schema
(
field
.
child
)
return
coreschema
.
Array
(
return
coreschema
.
Array
(
items
=
child_schema
,
items
=
child_schema
,
...
...
tests/test_schemas.py
View file @
d2286ba6
...
@@ -39,6 +39,11 @@ class ExampleSerializer(serializers.Serializer):
...
@@ -39,6 +39,11 @@ class ExampleSerializer(serializers.Serializer):
hidden
=
serializers
.
HiddenField
(
default
=
'hello'
)
hidden
=
serializers
.
HiddenField
(
default
=
'hello'
)
class
AnotherSerializerWithListFields
(
serializers
.
Serializer
):
a
=
serializers
.
ListField
(
child
=
serializers
.
IntegerField
())
b
=
serializers
.
ListSerializer
(
child
=
serializers
.
CharField
())
class
AnotherSerializer
(
serializers
.
Serializer
):
class
AnotherSerializer
(
serializers
.
Serializer
):
c
=
serializers
.
CharField
(
required
=
True
)
c
=
serializers
.
CharField
(
required
=
True
)
d
=
serializers
.
CharField
(
required
=
False
)
d
=
serializers
.
CharField
(
required
=
False
)
...
@@ -57,6 +62,13 @@ class ExampleViewSet(ModelViewSet):
...
@@ -57,6 +62,13 @@ class ExampleViewSet(ModelViewSet):
"""
"""
return
super
(
ExampleSerializer
,
self
)
.
retrieve
(
self
,
request
)
return
super
(
ExampleSerializer
,
self
)
.
retrieve
(
self
,
request
)
@detail_route
(
methods
=
[
'post'
],
serializer_class
=
AnotherSerializerWithListFields
)
def
custom_action_with_list_fields
(
self
,
request
,
pk
):
"""
A custom action using both list field and list serializer in the serializer.
"""
return
super
(
ExampleSerializer
,
self
)
.
retrieve
(
self
,
request
)
@list_route
()
@list_route
()
def
custom_list_action
(
self
,
request
):
def
custom_list_action
(
self
,
request
):
return
super
(
ExampleViewSet
,
self
)
.
list
(
self
,
request
)
return
super
(
ExampleViewSet
,
self
)
.
list
(
self
,
request
)
...
@@ -174,6 +186,17 @@ class TestRouterGeneratedSchema(TestCase):
...
@@ -174,6 +186,17 @@ class TestRouterGeneratedSchema(TestCase):
coreapi
.
Field
(
'd'
,
required
=
False
,
location
=
'form'
,
schema
=
coreschema
.
String
(
title
=
'D'
)),
coreapi
.
Field
(
'd'
,
required
=
False
,
location
=
'form'
,
schema
=
coreschema
.
String
(
title
=
'D'
)),
]
]
),
),
'custom_action_with_list_fields'
:
coreapi
.
Link
(
url
=
'/example/{id}/custom_action_with_list_fields/'
,
action
=
'post'
,
encoding
=
'application/json'
,
description
=
'A custom action using both list field and list serializer in the serializer.'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
()),
coreapi
.
Field
(
'a'
,
required
=
True
,
location
=
'form'
,
schema
=
coreschema
.
Array
(
title
=
'A'
,
items
=
coreschema
.
Integer
())),
coreapi
.
Field
(
'b'
,
required
=
True
,
location
=
'form'
,
schema
=
coreschema
.
Array
(
title
=
'B'
,
items
=
coreschema
.
String
())),
]
),
'custom_list_action'
:
coreapi
.
Link
(
'custom_list_action'
:
coreapi
.
Link
(
url
=
'/example/custom_list_action/'
,
url
=
'/example/custom_list_action/'
,
action
=
'get'
action
=
'get'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment