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
0d354e8f
Commit
0d354e8f
authored
Sep 12, 2014
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
to_internal_value() and to_representation()
parent
adcb64ab
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
62 additions
and
60 deletions
+62
-60
rest_framework/fields.py
+44
-42
rest_framework/pagination.py
+2
-2
rest_framework/relations.py
+1
-1
rest_framework/serializers.py
+14
-14
tests/test_validation.py
+1
-1
No files found.
rest_framework/fields.py
View file @
0d354e8f
...
@@ -195,7 +195,7 @@ class Field(object):
...
@@ -195,7 +195,7 @@ class Field(object):
raise
SkipField
()
raise
SkipField
()
return
self
.
default
return
self
.
default
def
validate_value
(
self
,
data
=
empty
):
def
run_validation
(
self
,
data
=
empty
):
"""
"""
Validate a simple representation and return the internal value.
Validate a simple representation and return the internal value.
...
@@ -208,7 +208,7 @@ class Field(object):
...
@@ -208,7 +208,7 @@ class Field(object):
self
.
fail
(
'required'
)
self
.
fail
(
'required'
)
return
self
.
get_default
()
return
self
.
get_default
()
value
=
self
.
to_
nativ
e
(
data
)
value
=
self
.
to_
internal_valu
e
(
data
)
self
.
run_validators
(
value
)
self
.
run_validators
(
value
)
return
value
return
value
...
@@ -225,17 +225,17 @@ class Field(object):
...
@@ -225,17 +225,17 @@ class Field(object):
if
errors
:
if
errors
:
raise
ValidationError
(
errors
)
raise
ValidationError
(
errors
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
"""
"""
Transform the *incoming* primative data into a native value.
Transform the *incoming* primative data into a native value.
"""
"""
raise
NotImplementedError
(
'to_
nativ
e() must be implemented.'
)
raise
NotImplementedError
(
'to_
internal_valu
e() must be implemented.'
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
"""
"""
Transform the *outgoing* native value into primative data.
Transform the *outgoing* native value into primative data.
"""
"""
raise
NotImplementedError
(
'to_
primative
() must be implemented.'
)
raise
NotImplementedError
(
'to_
representation
() must be implemented.'
)
def
fail
(
self
,
key
,
**
kwargs
):
def
fail
(
self
,
key
,
**
kwargs
):
"""
"""
...
@@ -279,14 +279,14 @@ class BooleanField(Field):
...
@@ -279,14 +279,14 @@ class BooleanField(Field):
return
dictionary
.
get
(
self
.
field_name
,
False
)
return
dictionary
.
get
(
self
.
field_name
,
False
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
if
data
in
self
.
TRUE_VALUES
:
if
data
in
self
.
TRUE_VALUES
:
return
True
return
True
elif
data
in
self
.
FALSE_VALUES
:
elif
data
in
self
.
FALSE_VALUES
:
return
False
return
False
self
.
fail
(
'invalid'
,
input
=
data
)
self
.
fail
(
'invalid'
,
input
=
data
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
:
if
value
is
None
:
return
None
return
None
if
value
in
self
.
TRUE_VALUES
:
if
value
in
self
.
TRUE_VALUES
:
...
@@ -309,12 +309,14 @@ class CharField(Field):
...
@@ -309,12 +309,14 @@ class CharField(Field):
self
.
min_length
=
kwargs
.
pop
(
'min_length'
,
None
)
self
.
min_length
=
kwargs
.
pop
(
'min_length'
,
None
)
super
(
CharField
,
self
)
.
__init__
(
**
kwargs
)
super
(
CharField
,
self
)
.
__init__
(
**
kwargs
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
if
data
==
''
and
not
self
.
allow_blank
:
if
data
==
''
and
not
self
.
allow_blank
:
self
.
fail
(
'blank'
)
self
.
fail
(
'blank'
)
if
data
is
None
:
return
None
return
str
(
data
)
return
str
(
data
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
:
if
value
is
None
:
return
None
return
None
return
str
(
value
)
return
str
(
value
)
...
@@ -326,17 +328,17 @@ class EmailField(CharField):
...
@@ -326,17 +328,17 @@ class EmailField(CharField):
}
}
default_validators
=
[
validators
.
validate_email
]
default_validators
=
[
validators
.
validate_email
]
def
to_native
(
self
,
data
):
def
to_internal_value
(
self
,
data
):
ret
=
super
(
EmailField
,
self
)
.
to_native
(
data
)
if
data
==
''
and
not
self
.
allow_blank
:
if
ret
is
None
:
self
.
fail
(
'blank'
)
if
data
is
None
:
return
None
return
None
return
ret
.
strip
()
return
str
(
data
)
.
strip
()
def
to_primative
(
self
,
value
):
def
to_representation
(
self
,
value
):
ret
=
super
(
EmailField
,
self
)
.
to_primative
(
value
)
if
value
is
None
:
if
ret
is
None
:
return
None
return
None
return
ret
.
strip
()
return
str
(
value
)
.
strip
()
class
RegexField
(
CharField
):
class
RegexField
(
CharField
):
...
@@ -378,14 +380,14 @@ class IntegerField(Field):
...
@@ -378,14 +380,14 @@ class IntegerField(Field):
if
min_value
is
not
None
:
if
min_value
is
not
None
:
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
try
:
try
:
data
=
int
(
str
(
data
))
data
=
int
(
str
(
data
))
except
(
ValueError
,
TypeError
):
except
(
ValueError
,
TypeError
):
self
.
fail
(
'invalid'
)
self
.
fail
(
'invalid'
)
return
data
return
data
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
:
if
value
is
None
:
return
None
return
None
return
int
(
value
)
return
int
(
value
)
...
@@ -405,7 +407,12 @@ class FloatField(Field):
...
@@ -405,7 +407,12 @@ class FloatField(Field):
if
min_value
is
not
None
:
if
min_value
is
not
None
:
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
def
to_primative
(
self
,
value
):
def
to_internal_value
(
self
,
value
):
if
value
is
None
:
return
None
return
float
(
value
)
def
to_representation
(
self
,
value
):
if
value
is
None
:
if
value
is
None
:
return
None
return
None
try
:
try
:
...
@@ -413,11 +420,6 @@ class FloatField(Field):
...
@@ -413,11 +420,6 @@ class FloatField(Field):
except
(
TypeError
,
ValueError
):
except
(
TypeError
,
ValueError
):
self
.
fail
(
'invalid'
,
value
=
value
)
self
.
fail
(
'invalid'
,
value
=
value
)
def
to_native
(
self
,
value
):
if
value
is
None
:
return
None
return
float
(
value
)
class
DecimalField
(
Field
):
class
DecimalField
(
Field
):
default_error_messages
=
{
default_error_messages
=
{
...
@@ -439,7 +441,7 @@ class DecimalField(Field):
...
@@ -439,7 +441,7 @@ class DecimalField(Field):
if
min_value
is
not
None
:
if
min_value
is
not
None
:
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
self
.
validators
.
append
(
validators
.
MinValueValidator
(
min_value
))
def
from_nativ
e
(
self
,
value
):
def
to_internal_valu
e
(
self
,
value
):
"""
"""
Validates that the input is a decimal number. Returns a Decimal
Validates that the input is a decimal number. Returns a Decimal
instance. Returns None for empty values. Ensures that there are no more
instance. Returns None for empty values. Ensures that there are no more
...
@@ -485,7 +487,7 @@ class DecimalField(Field):
...
@@ -485,7 +487,7 @@ class DecimalField(Field):
return
value
return
value
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
isinstance
(
value
,
decimal
.
Decimal
):
if
isinstance
(
value
,
decimal
.
Decimal
):
context
=
decimal
.
getcontext
()
.
copy
()
context
=
decimal
.
getcontext
()
.
copy
()
context
.
prec
=
self
.
max_digits
context
.
prec
=
self
.
max_digits
...
@@ -516,7 +518,7 @@ class DateField(Field):
...
@@ -516,7 +518,7 @@ class DateField(Field):
self
.
format
=
format
if
format
is
not
None
else
self
.
format
self
.
format
=
format
if
format
is
not
None
else
self
.
format
super
(
DateField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
DateField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
from_nativ
e
(
self
,
value
):
def
to_internal_valu
e
(
self
,
value
):
if
value
in
validators
.
EMPTY_VALUES
:
if
value
in
validators
.
EMPTY_VALUES
:
return
None
return
None
...
@@ -552,7 +554,7 @@ class DateField(Field):
...
@@ -552,7 +554,7 @@ class DateField(Field):
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
raise
ValidationError
(
msg
)
raise
ValidationError
(
msg
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
or
self
.
format
is
None
:
if
value
is
None
or
self
.
format
is
None
:
return
value
return
value
...
@@ -576,7 +578,7 @@ class DateTimeField(Field):
...
@@ -576,7 +578,7 @@ class DateTimeField(Field):
self
.
format
=
format
if
format
is
not
None
else
self
.
format
self
.
format
=
format
if
format
is
not
None
else
self
.
format
super
(
DateTimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
DateTimeField
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
from_nativ
e
(
self
,
value
):
def
to_internal_valu
e
(
self
,
value
):
if
value
in
validators
.
EMPTY_VALUES
:
if
value
in
validators
.
EMPTY_VALUES
:
return
None
return
None
...
@@ -618,7 +620,7 @@ class DateTimeField(Field):
...
@@ -618,7 +620,7 @@ class DateTimeField(Field):
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
raise
ValidationError
(
msg
)
raise
ValidationError
(
msg
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
or
self
.
format
is
None
:
if
value
is
None
or
self
.
format
is
None
:
return
value
return
value
...
@@ -670,7 +672,7 @@ class TimeField(Field):
...
@@ -670,7 +672,7 @@ class TimeField(Field):
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
msg
=
self
.
error_messages
[
'invalid'
]
%
humanized_format
raise
ValidationError
(
msg
)
raise
ValidationError
(
msg
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
value
is
None
or
self
.
format
is
None
:
if
value
is
None
or
self
.
format
is
None
:
return
value
return
value
...
@@ -711,13 +713,13 @@ class ChoiceField(Field):
...
@@ -711,13 +713,13 @@ class ChoiceField(Field):
super
(
ChoiceField
,
self
)
.
__init__
(
**
kwargs
)
super
(
ChoiceField
,
self
)
.
__init__
(
**
kwargs
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
try
:
try
:
return
self
.
choice_strings_to_values
[
str
(
data
)]
return
self
.
choice_strings_to_values
[
str
(
data
)]
except
KeyError
:
except
KeyError
:
self
.
fail
(
'invalid_choice'
,
input
=
data
)
self
.
fail
(
'invalid_choice'
,
input
=
data
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
return
value
return
value
...
@@ -727,15 +729,15 @@ class MultipleChoiceField(ChoiceField):
...
@@ -727,15 +729,15 @@ class MultipleChoiceField(ChoiceField):
'not_a_list'
:
_
(
'Expected a list of items but got type `{input_type}`'
)
'not_a_list'
:
_
(
'Expected a list of items but got type `{input_type}`'
)
}
}
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
if
not
hasattr
(
data
,
'__iter__'
):
if
not
hasattr
(
data
,
'__iter__'
):
self
.
fail
(
'not_a_list'
,
input_type
=
type
(
data
)
.
__name__
)
self
.
fail
(
'not_a_list'
,
input_type
=
type
(
data
)
.
__name__
)
return
set
([
return
set
([
super
(
MultipleChoiceField
,
self
)
.
to_
nativ
e
(
item
)
super
(
MultipleChoiceField
,
self
)
.
to_
internal_valu
e
(
item
)
for
item
in
data
for
item
in
data
])
])
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
return
value
return
value
...
@@ -768,7 +770,7 @@ class ReadOnlyField(Field):
...
@@ -768,7 +770,7 @@ class ReadOnlyField(Field):
kwargs
[
'read_only'
]
=
True
kwargs
[
'read_only'
]
=
True
super
(
ReadOnlyField
,
self
)
.
__init__
(
**
kwargs
)
super
(
ReadOnlyField
,
self
)
.
__init__
(
**
kwargs
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
is_simple_callable
(
value
):
if
is_simple_callable
(
value
):
return
value
()
return
value
()
return
value
return
value
...
@@ -795,7 +797,7 @@ class SerializerMethodField(Field):
...
@@ -795,7 +797,7 @@ class SerializerMethodField(Field):
kwargs
[
'read_only'
]
=
True
kwargs
[
'read_only'
]
=
True
super
(
SerializerMethodField
,
self
)
.
__init__
(
**
kwargs
)
super
(
SerializerMethodField
,
self
)
.
__init__
(
**
kwargs
)
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
method_attr
=
self
.
method_attr
method_attr
=
self
.
method_attr
if
method_attr
is
None
:
if
method_attr
is
None
:
method_attr
=
'get_{field_name}'
.
format
(
field_name
=
self
.
field_name
)
method_attr
=
'get_{field_name}'
.
format
(
field_name
=
self
.
field_name
)
...
@@ -815,13 +817,13 @@ class ModelField(Field):
...
@@ -815,13 +817,13 @@ class ModelField(Field):
kwargs
[
'source'
]
=
'*'
kwargs
[
'source'
]
=
'*'
super
(
ModelField
,
self
)
.
__init__
(
**
kwargs
)
super
(
ModelField
,
self
)
.
__init__
(
**
kwargs
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
rel
=
getattr
(
self
.
model_field
,
'rel'
,
None
)
rel
=
getattr
(
self
.
model_field
,
'rel'
,
None
)
if
rel
is
not
None
:
if
rel
is
not
None
:
return
rel
.
to
.
_meta
.
get_field
(
rel
.
field_name
)
.
to_python
(
data
)
return
rel
.
to
.
_meta
.
get_field
(
rel
.
field_name
)
.
to_python
(
data
)
return
self
.
model_field
.
to_python
(
data
)
return
self
.
model_field
.
to_python
(
data
)
def
to_
primative
(
self
,
obj
):
def
to_
representation
(
self
,
obj
):
value
=
self
.
model_field
.
_get_val_from_obj
(
obj
)
value
=
self
.
model_field
.
_get_val_from_obj
(
obj
)
if
is_protected_type
(
value
):
if
is_protected_type
(
value
):
return
value
return
value
...
...
rest_framework/pagination.py
View file @
0d354e8f
...
@@ -13,7 +13,7 @@ class NextPageField(serializers.Field):
...
@@ -13,7 +13,7 @@ class NextPageField(serializers.Field):
"""
"""
page_field
=
'page'
page_field
=
'page'
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
not
value
.
has_next
():
if
not
value
.
has_next
():
return
None
return
None
page
=
value
.
next_page_number
()
page
=
value
.
next_page_number
()
...
@@ -28,7 +28,7 @@ class PreviousPageField(serializers.Field):
...
@@ -28,7 +28,7 @@ class PreviousPageField(serializers.Field):
"""
"""
page_field
=
'page'
page_field
=
'page'
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
if
not
value
.
has_previous
():
if
not
value
.
has_previous
():
return
None
return
None
page
=
value
.
previous_page_number
()
page
=
value
.
previous_page_number
()
...
...
rest_framework/relations.py
View file @
0d354e8f
...
@@ -110,7 +110,7 @@ class HyperlinkedIdentityField(RelatedField):
...
@@ -110,7 +110,7 @@ class HyperlinkedIdentityField(RelatedField):
def
get_attribute
(
self
,
instance
):
def
get_attribute
(
self
,
instance
):
return
instance
return
instance
def
to_
primative
(
self
,
value
):
def
to_
representation
(
self
,
value
):
request
=
self
.
context
.
get
(
'request'
,
None
)
request
=
self
.
context
.
get
(
'request'
,
None
)
format
=
self
.
context
.
get
(
'format'
,
None
)
format
=
self
.
context
.
get
(
'format'
,
None
)
...
...
rest_framework/serializers.py
View file @
0d354e8f
...
@@ -47,11 +47,11 @@ class BaseSerializer(Field):
...
@@ -47,11 +47,11 @@ class BaseSerializer(Field):
self
.
instance
=
instance
self
.
instance
=
instance
self
.
_initial_data
=
data
self
.
_initial_data
=
data
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
raise
NotImplementedError
(
'`to_
nativ
e()` must be implemented.'
)
raise
NotImplementedError
(
'`to_
internal_valu
e()` must be implemented.'
)
def
to_
primative
(
self
,
instance
):
def
to_
representation
(
self
,
instance
):
raise
NotImplementedError
(
'`to_
primative
()` must be implemented.'
)
raise
NotImplementedError
(
'`to_
representation
()` must be implemented.'
)
def
update
(
self
,
instance
,
attrs
):
def
update
(
self
,
instance
,
attrs
):
raise
NotImplementedError
(
'`update()` must be implemented.'
)
raise
NotImplementedError
(
'`update()` must be implemented.'
)
...
@@ -74,7 +74,7 @@ class BaseSerializer(Field):
...
@@ -74,7 +74,7 @@ class BaseSerializer(Field):
def
is_valid
(
self
,
raise_exception
=
False
):
def
is_valid
(
self
,
raise_exception
=
False
):
if
not
hasattr
(
self
,
'_validated_data'
):
if
not
hasattr
(
self
,
'_validated_data'
):
try
:
try
:
self
.
_validated_data
=
self
.
to_
nativ
e
(
self
.
_initial_data
)
self
.
_validated_data
=
self
.
to_
internal_valu
e
(
self
.
_initial_data
)
except
ValidationError
as
exc
:
except
ValidationError
as
exc
:
self
.
_validated_data
=
{}
self
.
_validated_data
=
{}
self
.
_errors
=
exc
.
message_dict
self
.
_errors
=
exc
.
message_dict
...
@@ -90,7 +90,7 @@ class BaseSerializer(Field):
...
@@ -90,7 +90,7 @@ class BaseSerializer(Field):
def
data
(
self
):
def
data
(
self
):
if
not
hasattr
(
self
,
'_data'
):
if
not
hasattr
(
self
,
'_data'
):
if
self
.
instance
is
not
None
:
if
self
.
instance
is
not
None
:
self
.
_data
=
self
.
to_
primative
(
self
.
instance
)
self
.
_data
=
self
.
to_
representation
(
self
.
instance
)
elif
self
.
_initial_data
is
not
None
:
elif
self
.
_initial_data
is
not
None
:
self
.
_data
=
dict
([
self
.
_data
=
dict
([
(
field_name
,
field
.
get_value
(
self
.
_initial_data
))
(
field_name
,
field
.
get_value
(
self
.
_initial_data
))
...
@@ -193,7 +193,7 @@ class Serializer(BaseSerializer):
...
@@ -193,7 +193,7 @@ class Serializer(BaseSerializer):
return
html
.
parse_html_dict
(
dictionary
,
prefix
=
self
.
field_name
)
return
html
.
parse_html_dict
(
dictionary
,
prefix
=
self
.
field_name
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
"""
"""
Dict of native values <- Dict of primitive datatypes.
Dict of native values <- Dict of primitive datatypes.
"""
"""
...
@@ -208,7 +208,7 @@ class Serializer(BaseSerializer):
...
@@ -208,7 +208,7 @@ class Serializer(BaseSerializer):
validate_method
=
getattr
(
self
,
'validate_'
+
field
.
field_name
,
None
)
validate_method
=
getattr
(
self
,
'validate_'
+
field
.
field_name
,
None
)
primitive_value
=
field
.
get_value
(
data
)
primitive_value
=
field
.
get_value
(
data
)
try
:
try
:
validated_value
=
field
.
validate_value
(
primitive_value
)
validated_value
=
field
.
run_validation
(
primitive_value
)
if
validate_method
is
not
None
:
if
validate_method
is
not
None
:
validated_value
=
validate_method
(
validated_value
)
validated_value
=
validate_method
(
validated_value
)
except
ValidationError
as
exc
:
except
ValidationError
as
exc
:
...
@@ -226,7 +226,7 @@ class Serializer(BaseSerializer):
...
@@ -226,7 +226,7 @@ class Serializer(BaseSerializer):
except
ValidationError
as
exc
:
except
ValidationError
as
exc
:
raise
ValidationError
({
'non_field_errors'
:
exc
.
messages
})
raise
ValidationError
({
'non_field_errors'
:
exc
.
messages
})
def
to_
primative
(
self
,
instance
):
def
to_
representation
(
self
,
instance
):
"""
"""
Object instance -> Dict of primitive datatypes.
Object instance -> Dict of primitive datatypes.
"""
"""
...
@@ -235,7 +235,7 @@ class Serializer(BaseSerializer):
...
@@ -235,7 +235,7 @@ class Serializer(BaseSerializer):
for
field
in
fields
:
for
field
in
fields
:
native_value
=
field
.
get_attribute
(
instance
)
native_value
=
field
.
get_attribute
(
instance
)
ret
[
field
.
field_name
]
=
field
.
to_
primative
(
native_value
)
ret
[
field
.
field_name
]
=
field
.
to_
representation
(
native_value
)
return
ret
return
ret
...
@@ -279,20 +279,20 @@ class ListSerializer(BaseSerializer):
...
@@ -279,20 +279,20 @@ class ListSerializer(BaseSerializer):
return
html
.
parse_html_list
(
dictionary
,
prefix
=
self
.
field_name
)
return
html
.
parse_html_list
(
dictionary
,
prefix
=
self
.
field_name
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
return
dictionary
.
get
(
self
.
field_name
,
empty
)
def
to_
nativ
e
(
self
,
data
):
def
to_
internal_valu
e
(
self
,
data
):
"""
"""
List of dicts of native values <- List of dicts of primitive datatypes.
List of dicts of native values <- List of dicts of primitive datatypes.
"""
"""
if
html
.
is_html_input
(
data
):
if
html
.
is_html_input
(
data
):
data
=
html
.
parse_html_list
(
data
)
data
=
html
.
parse_html_list
(
data
)
return
[
self
.
child
.
validate
(
item
)
for
item
in
data
]
return
[
self
.
child
.
run_validation
(
item
)
for
item
in
data
]
def
to_
primative
(
self
,
data
):
def
to_
representation
(
self
,
data
):
"""
"""
List of object instances -> List of dicts of primitive datatypes.
List of object instances -> List of dicts of primitive datatypes.
"""
"""
return
[
self
.
child
.
to_
primative
(
item
)
for
item
in
data
]
return
[
self
.
child
.
to_
representation
(
item
)
for
item
in
data
]
def
create
(
self
,
attrs_list
):
def
create
(
self
,
attrs_list
):
return
[
self
.
child
.
create
(
attrs
)
for
attrs
in
attrs_list
]
return
[
self
.
child
.
create
(
attrs
)
for
attrs
in
attrs_list
]
...
...
tests/test_validation.py
View file @
0d354e8f
...
@@ -158,7 +158,7 @@ class TestChoiceFieldChoicesValidate(TestCase):
...
@@ -158,7 +158,7 @@ class TestChoiceFieldChoicesValidate(TestCase):
f
=
serializers
.
ChoiceField
(
choices
=
self
.
CHOICES
)
f
=
serializers
.
ChoiceField
(
choices
=
self
.
CHOICES
)
value
=
self
.
CHOICES
[
0
][
0
]
value
=
self
.
CHOICES
[
0
][
0
]
try
:
try
:
f
.
to_
nativ
e
(
value
)
f
.
to_
internal_valu
e
(
value
)
except
ValidationError
:
except
ValidationError
:
self
.
fail
(
"Value
%
s does not validate"
%
str
(
value
))
self
.
fail
(
"Value
%
s does not validate"
%
str
(
value
))
...
...
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