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
04158e18
Commit
04158e18
authored
Nov 18, 2015
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3513 from pattisdr/feature/ListField_needs_to_enforce_list
ListField does not enforce that input is a list
parents
75a63c2c
3ddbf92b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
2 deletions
+11
-2
rest_framework/fields.py
+1
-1
tests/test_fields.py
+10
-1
No files found.
rest_framework/fields.py
View file @
04158e18
...
...
@@ -1461,7 +1461,7 @@ class ListField(Field):
"""
if
html
.
is_html_input
(
data
):
data
=
html
.
parse_html_list
(
data
)
if
isinstance
(
data
,
type
(
''
))
or
not
hasattr
(
data
,
'__iter__'
):
if
isinstance
(
data
,
type
(
''
))
or
isinstance
(
data
,
collections
.
Mapping
)
or
not
hasattr
(
data
,
'__iter__'
):
self
.
fail
(
'not_a_list'
,
input_type
=
type
(
data
)
.
__name__
)
if
not
self
.
allow_empty
and
len
(
data
)
==
0
:
self
.
fail
(
'empty'
)
...
...
tests/test_fields.py
View file @
04158e18
...
...
@@ -1437,7 +1437,8 @@ class TestListField(FieldValues):
]
invalid_inputs
=
[
(
'not a list'
,
[
'Expected a list of items but got type "str".'
]),
([
1
,
2
,
'error'
],
[
'A valid integer is required.'
])
([
1
,
2
,
'error'
],
[
'A valid integer is required.'
]),
({
'one'
:
'two'
},
[
'Expected a list of items but got type "dict".'
])
]
outputs
=
[
([
1
,
2
,
3
],
[
1
,
2
,
3
]),
...
...
@@ -1454,6 +1455,14 @@ class TestListField(FieldValues):
"Remove `source=` from the field declaration."
)
def
test_collection_types_are_invalid_input
(
self
):
field
=
serializers
.
ListField
(
child
=
serializers
.
CharField
())
input_value
=
({
'one'
:
'two'
})
with
pytest
.
raises
(
serializers
.
ValidationError
)
as
exc_info
:
field
.
to_internal_value
(
input_value
)
assert
exc_info
.
value
.
detail
==
[
'Expected a list of items but got type "dict".'
]
class
TestEmptyListField
(
FieldValues
):
"""
...
...
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