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
9a661f52
Commit
9a661f52
authored
Jul 31, 2015
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3202 from tomchristie/respect-blank-on-many-to-many
Respect blank on many to many fields.
parents
aa3f844b
e68d7378
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
6 additions
and
2 deletions
+6
-2
rest_framework/relations.py
+1
-0
rest_framework/utils/field_mapping.py
+3
-0
tests/test_model_serializer.py
+2
-2
No files found.
rest_framework/relations.py
View file @
9a661f52
...
@@ -64,6 +64,7 @@ class RelatedField(Field):
...
@@ -64,6 +64,7 @@ class RelatedField(Field):
'when setting read_only=`True`.'
'when setting read_only=`True`.'
)
)
kwargs
.
pop
(
'many'
,
None
)
kwargs
.
pop
(
'many'
,
None
)
kwargs
.
pop
(
'allow_empty'
,
None
)
super
(
RelatedField
,
self
)
.
__init__
(
**
kwargs
)
super
(
RelatedField
,
self
)
.
__init__
(
**
kwargs
)
def
__new__
(
cls
,
*
args
,
**
kwargs
):
def
__new__
(
cls
,
*
args
,
**
kwargs
):
...
...
rest_framework/utils/field_mapping.py
View file @
9a661f52
...
@@ -225,6 +225,7 @@ def get_relation_kwargs(field_name, relation_info):
...
@@ -225,6 +225,7 @@ def get_relation_kwargs(field_name, relation_info):
# If this field is read-only, then return early.
# If this field is read-only, then return early.
# No further keyword arguments are valid.
# No further keyword arguments are valid.
return
kwargs
return
kwargs
if
model_field
.
has_default
()
or
model_field
.
null
:
if
model_field
.
has_default
()
or
model_field
.
null
:
kwargs
[
'required'
]
=
False
kwargs
[
'required'
]
=
False
if
model_field
.
null
:
if
model_field
.
null
:
...
@@ -234,6 +235,8 @@ def get_relation_kwargs(field_name, relation_info):
...
@@ -234,6 +235,8 @@ def get_relation_kwargs(field_name, relation_info):
if
getattr
(
model_field
,
'unique'
,
False
):
if
getattr
(
model_field
,
'unique'
,
False
):
validator
=
UniqueValidator
(
queryset
=
model_field
.
model
.
_default_manager
)
validator
=
UniqueValidator
(
queryset
=
model_field
.
model
.
_default_manager
)
kwargs
[
'validators'
]
=
kwargs
.
get
(
'validators'
,
[])
+
[
validator
]
kwargs
[
'validators'
]
=
kwargs
.
get
(
'validators'
,
[])
+
[
validator
]
if
to_many
and
not
model_field
.
blank
:
kwargs
[
'allow_empty'
]
=
False
return
kwargs
return
kwargs
...
...
tests/test_model_serializer.py
View file @
9a661f52
...
@@ -395,7 +395,7 @@ class TestRelationalFieldMappings(TestCase):
...
@@ -395,7 +395,7 @@ class TestRelationalFieldMappings(TestCase):
id = IntegerField(label='ID', read_only=True)
id = IntegerField(label='ID', read_only=True)
foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all())
foreign_key = PrimaryKeyRelatedField(queryset=ForeignKeyTargetModel.objects.all())
one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all(), validators=[<UniqueValidator(queryset=RelationalModel.objects.all())>])
one_to_one = PrimaryKeyRelatedField(queryset=OneToOneTargetModel.objects.all(), validators=[<UniqueValidator(queryset=RelationalModel.objects.all())>])
many_to_many = PrimaryKeyRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all())
many_to_many = PrimaryKeyRelatedField(
allow_empty=False,
many=True, queryset=ManyToManyTargetModel.objects.all())
through = PrimaryKeyRelatedField(many=True, read_only=True)
through = PrimaryKeyRelatedField(many=True, read_only=True)
"""
)
"""
)
self
.
assertEqual
(
unicode_repr
(
TestSerializer
()),
expected
)
self
.
assertEqual
(
unicode_repr
(
TestSerializer
()),
expected
)
...
@@ -434,7 +434,7 @@ class TestRelationalFieldMappings(TestCase):
...
@@ -434,7 +434,7 @@ class TestRelationalFieldMappings(TestCase):
url = HyperlinkedIdentityField(view_name='relationalmodel-detail')
url = HyperlinkedIdentityField(view_name='relationalmodel-detail')
foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail')
foreign_key = HyperlinkedRelatedField(queryset=ForeignKeyTargetModel.objects.all(), view_name='foreignkeytargetmodel-detail')
one_to_one = HyperlinkedRelatedField(queryset=OneToOneTargetModel.objects.all(), validators=[<UniqueValidator(queryset=RelationalModel.objects.all())>], view_name='onetoonetargetmodel-detail')
one_to_one = HyperlinkedRelatedField(queryset=OneToOneTargetModel.objects.all(), validators=[<UniqueValidator(queryset=RelationalModel.objects.all())>], view_name='onetoonetargetmodel-detail')
many_to_many = HyperlinkedRelatedField(many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail')
many_to_many = HyperlinkedRelatedField(
allow_empty=False,
many=True, queryset=ManyToManyTargetModel.objects.all(), view_name='manytomanytargetmodel-detail')
through = HyperlinkedRelatedField(many=True, read_only=True, view_name='throughtargetmodel-detail')
through = HyperlinkedRelatedField(many=True, read_only=True, view_name='throughtargetmodel-detail')
"""
)
"""
)
self
.
assertEqual
(
unicode_repr
(
TestSerializer
()),
expected
)
self
.
assertEqual
(
unicode_repr
(
TestSerializer
()),
expected
)
...
...
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