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
6da21fa7
Commit
6da21fa7
authored
Jan 03, 2013
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #541 from yprez/default_and_partial_serializers2
Fix "default" values and partial serializers. Fixes #532.
parents
a122856d
3873bc8a
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
19 additions
and
2 deletions
+19
-2
rest_framework/fields.py
+3
-1
rest_framework/tests/models.py
+1
-0
rest_framework/tests/serializer.py
+15
-1
No files found.
rest_framework/fields.py
View file @
6da21fa7
...
@@ -186,8 +186,10 @@ class WritableField(Field):
...
@@ -186,8 +186,10 @@ class WritableField(Field):
else
:
else
:
native
=
data
[
field_name
]
native
=
data
[
field_name
]
except
KeyError
:
except
KeyError
:
if
self
.
default
is
not
None
:
if
self
.
default
is
not
None
and
not
self
.
root
.
partial
:
native
=
self
.
default
native
=
self
.
default
# partial serializers shouldn't set the default field to avoid
# overriding the previously set value
else
:
else
:
if
self
.
required
:
if
self
.
required
:
raise
ValidationError
(
self
.
error_messages
[
'required'
])
raise
ValidationError
(
self
.
error_messages
[
'required'
])
...
...
rest_framework/tests/models.py
View file @
6da21fa7
...
@@ -71,6 +71,7 @@ class SlugBasedModel(RESTFrameworkModel):
...
@@ -71,6 +71,7 @@ class SlugBasedModel(RESTFrameworkModel):
class
DefaultValueModel
(
RESTFrameworkModel
):
class
DefaultValueModel
(
RESTFrameworkModel
):
text
=
models
.
CharField
(
default
=
'foobar'
,
max_length
=
100
)
text
=
models
.
CharField
(
default
=
'foobar'
,
max_length
=
100
)
extra
=
models
.
CharField
(
blank
=
True
,
null
=
True
,
max_length
=
100
)
class
CallableDefaultValueModel
(
RESTFrameworkModel
):
class
CallableDefaultValueModel
(
RESTFrameworkModel
):
...
...
rest_framework/tests/serializer.py
View file @
6da21fa7
...
@@ -340,7 +340,6 @@ class ModelValidationTests(TestCase):
...
@@ -340,7 +340,6 @@ class ModelValidationTests(TestCase):
self
.
assertTrue
(
photo_serializer
.
save
())
self
.
assertTrue
(
photo_serializer
.
save
())
class
RegexValidationTest
(
TestCase
):
class
RegexValidationTest
(
TestCase
):
def
test_create_failed
(
self
):
def
test_create_failed
(
self
):
serializer
=
BookSerializer
(
data
=
{
'isbn'
:
'1234567890'
})
serializer
=
BookSerializer
(
data
=
{
'isbn'
:
'1234567890'
})
...
@@ -551,6 +550,21 @@ class DefaultValueTests(TestCase):
...
@@ -551,6 +550,21 @@ class DefaultValueTests(TestCase):
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
text
,
'overridden'
)
self
.
assertEquals
(
instance
.
text
,
'overridden'
)
def
test_partial_update_default
(
self
):
""" Regression test for issue #532 """
data
=
{
'text'
:
'overridden'
}
serializer
=
self
.
serializer_class
(
data
=
data
,
partial
=
True
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
data
=
{
'extra'
:
'extra_value'
}
serializer
=
self
.
serializer_class
(
instance
=
instance
,
data
=
data
,
partial
=
True
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
self
.
assertEquals
(
instance
.
extra
,
'extra_value'
)
self
.
assertEquals
(
instance
.
text
,
'overridden'
)
class
CallableDefaultValueTests
(
TestCase
):
class
CallableDefaultValueTests
(
TestCase
):
def
setUp
(
self
):
def
setUp
(
self
):
...
...
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