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
607c31c6
Commit
607c31c6
authored
Oct 24, 2012
by
Jamie Matthews
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move per-field and cross-field validation into a single method
parent
d60d598e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
15 deletions
+13
-15
rest_framework/serializers.py
+13
-15
No files found.
rest_framework/serializers.py
View file @
607c31c6
...
...
@@ -208,33 +208,32 @@ class BaseSerializer(Field):
return
reverted_data
def
validate_fields
(
self
,
attrs
):
def
perform_validation
(
self
,
attrs
):
"""
Run
validate_<fieldname>
methods on the serializer
Run
`validate_<fieldname>()` and `validate()`
methods on the serializer
"""
fields
=
self
.
get_fields
(
serialize
=
False
,
data
=
attrs
,
nested
=
self
.
opts
.
nested
)
for
field_name
,
field
in
fields
.
items
():
try
:
clean
_method
=
getattr
(
self
,
'validate_
%
s'
%
field_name
,
None
)
if
clean
_method
:
validate
_method
=
getattr
(
self
,
'validate_
%
s'
%
field_name
,
None
)
if
validate
_method
:
source
=
field
.
source
or
field_name
attrs
=
clean
_method
(
attrs
,
source
)
attrs
=
validate
_method
(
attrs
,
source
)
except
ValidationError
as
err
:
self
.
_errors
[
field_name
]
=
self
.
_errors
.
get
(
field_name
,
[])
+
list
(
err
.
messages
)
try
:
attrs
=
self
.
validate
(
attrs
)
except
ValidationError
as
err
:
self
.
_errors
[
'non_field_errors'
]
=
err
.
messages
return
attrs
def
validate
_all
(
self
,
attrs
):
def
validate
(
self
,
attrs
):
"""
Run the `validate` method on the serializer, if it exist
s
Stub method, to be overridden in Serializer subclasse
s
"""
try
:
validate_method
=
getattr
(
self
,
'validate'
,
None
)
if
validate_method
:
attrs
=
validate_method
(
attrs
)
except
ValidationError
as
err
:
self
.
_errors
[
'non_field_errors'
]
=
err
.
messages
return
attrs
def
restore_object
(
self
,
attrs
,
instance
=
None
):
...
...
@@ -270,8 +269,7 @@ class BaseSerializer(Field):
self
.
_errors
=
{}
if
data
is
not
None
:
attrs
=
self
.
restore_fields
(
data
)
attrs
=
self
.
validate_fields
(
attrs
)
attrs
=
self
.
validate_all
(
attrs
)
attrs
=
self
.
perform_validation
(
attrs
)
else
:
self
.
_errors
[
'non_field_errors'
]
=
[
'No input provided'
]
...
...
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