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
1e678791
Commit
1e678791
authored
Jun 23, 2015
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2922 from thedrow/patch-11
Cache fields list for to_internal_value and to_representation
parents
bbca795c
1701ddae
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
5 deletions
+17
-5
rest_framework/serializers.py
+17
-5
No files found.
rest_framework/serializers.py
View file @
1e678791
...
...
@@ -14,6 +14,7 @@ from __future__ import unicode_literals
from
django.db
import
models
from
django.db.models.fields
import
FieldDoesNotExist
,
Field
as
DjangoModelField
from
django.db.models
import
query
from
django.utils.functional
import
cached_property
from
django.utils.translation
import
ugettext_lazy
as
_
from
rest_framework.compat
import
(
postgres_fields
,
...
...
@@ -318,6 +319,20 @@ class Serializer(BaseSerializer):
self
.
_fields
[
key
]
=
value
return
self
.
_fields
@cached_property
def
_writable_fields
(
self
):
return
[
field
for
field
in
self
.
fields
.
values
()
if
(
not
field
.
read_only
)
or
(
field
.
default
is
not
empty
)
]
@cached_property
def
_readable_fields
(
self
):
return
[
field
for
field
in
self
.
fields
.
values
()
if
not
field
.
write_only
]
def
get_fields
(
self
):
"""
Returns a dictionary of {field_name: field_instance}.
...
...
@@ -392,10 +407,7 @@ class Serializer(BaseSerializer):
ret
=
OrderedDict
()
errors
=
OrderedDict
()
fields
=
[
field
for
field
in
self
.
fields
.
values
()
if
(
not
field
.
read_only
)
or
(
field
.
default
is
not
empty
)
]
fields
=
self
.
_writable_fields
for
field
in
fields
:
validate_method
=
getattr
(
self
,
'validate_'
+
field
.
field_name
,
None
)
...
...
@@ -423,7 +435,7 @@ class Serializer(BaseSerializer):
Object instance -> Dict of primitive datatypes.
"""
ret
=
OrderedDict
()
fields
=
[
field
for
field
in
self
.
fields
.
values
()
if
not
field
.
write_only
]
fields
=
self
.
_readable_fields
for
field
in
fields
:
try
:
...
...
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