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
0047a460
Commit
0047a460
authored
Oct 30, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge fixes for 'blank=True' fields. Fixes #324, Fixes #325
Thanks to @Roarster.
parent
5670cb03
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
69 additions
and
1 deletions
+69
-1
rest_framework/fields.py
+12
-1
rest_framework/serializers.py
+3
-0
rest_framework/tests/models.py
+5
-0
rest_framework/tests/serializer.py
+49
-0
No files found.
rest_framework/fields.py
View file @
0047a460
...
...
@@ -114,7 +114,7 @@ class WritableField(Field):
def
__init__
(
self
,
source
=
None
,
read_only
=
False
,
required
=
None
,
validators
=
[],
error_messages
=
None
,
widget
=
None
,
default
=
None
):
default
=
None
,
blank
=
None
):
super
(
WritableField
,
self
)
.
__init__
(
source
=
source
)
...
...
@@ -133,6 +133,7 @@ class WritableField(Field):
self
.
validators
=
self
.
default_validators
+
validators
self
.
default
=
default
or
self
.
default
self
.
blank
=
blank
# Widgets are ony used for HTML forms.
widget
=
widget
or
self
.
widget
...
...
@@ -467,6 +468,16 @@ class CharField(WritableField):
if
max_length
is
not
None
:
self
.
validators
.
append
(
validators
.
MaxLengthValidator
(
max_length
))
def
validate
(
self
,
value
):
"""
Validates that the value is supplied (if required).
"""
# if empty string and allow blank
if
self
.
blank
and
not
value
:
return
else
:
super
(
CharField
,
self
)
.
validate
(
value
)
def
from_native
(
self
,
value
):
if
isinstance
(
value
,
basestring
)
or
value
is
None
:
return
value
...
...
rest_framework/serializers.py
View file @
0047a460
...
...
@@ -393,6 +393,9 @@ class ModelSerializer(Serializer):
Creates a default instance of a basic non-relational field.
"""
kwargs
=
{}
kwargs
[
'blank'
]
=
model_field
.
blank
if
model_field
.
null
:
kwargs
[
'required'
]
=
False
...
...
rest_framework/tests/models.py
View file @
0047a460
...
...
@@ -121,3 +121,8 @@ class BlogPostComment(RESTFrameworkModel):
class
Person
(
RESTFrameworkModel
):
name
=
models
.
CharField
(
max_length
=
10
)
age
=
models
.
IntegerField
(
null
=
True
,
blank
=
True
)
# Model for issue #324
class
BlankFieldModel
(
RESTFrameworkModel
):
title
=
models
.
CharField
(
max_length
=
100
,
blank
=
True
)
rest_framework/tests/serializer.py
View file @
0047a460
...
...
@@ -449,3 +449,52 @@ class ManyRelatedTests(TestCase):
}
self
.
assertEqual
(
serializer
.
data
,
expected
)
# Test for issue #324
class
BlankFieldTests
(
TestCase
):
def
setUp
(
self
):
class
BlankFieldModelSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
BlankFieldModel
class
BlankFieldSerializer
(
serializers
.
Serializer
):
title
=
serializers
.
CharField
(
blank
=
True
)
class
NotBlankFieldModelSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
BasicModel
class
NotBlankFieldSerializer
(
serializers
.
Serializer
):
title
=
serializers
.
CharField
()
self
.
model_serializer_class
=
BlankFieldModelSerializer
self
.
serializer_class
=
BlankFieldSerializer
self
.
not_blank_model_serializer_class
=
NotBlankFieldModelSerializer
self
.
not_blank_serializer_class
=
NotBlankFieldSerializer
self
.
data
=
{
'title'
:
''
}
def
test_create_blank_field
(
self
):
serializer
=
self
.
serializer_class
(
self
.
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
def
test_create_model_blank_field
(
self
):
serializer
=
self
.
model_serializer_class
(
self
.
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
def
test_create_not_blank_field
(
self
):
"""
Test to ensure blank data in a field not marked as blank=True
is considered invalid in a non-model serializer
"""
serializer
=
self
.
not_blank_serializer_class
(
self
.
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
False
)
def
test_create_model_not_blank_field
(
self
):
"""
Test to ensure blank data in a field not marked as blank=True
is considered invalid in a model serializer
"""
serializer
=
self
.
not_blank_model_serializer_class
(
self
.
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
False
)
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