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
2ecd9841
Commit
2ecd9841
authored
Jan 13, 2014
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1343 from linovia/hotfix/1129
Fix for #1129
parents
b61cef43
f217f687
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
10 deletions
+25
-10
rest_framework/relations.py
+5
-10
rest_framework/tests/test_relations.py
+20
-0
No files found.
rest_framework/relations.py
View file @
2ecd9841
...
...
@@ -65,16 +65,11 @@ class RelatedField(WritableField):
def
initialize
(
self
,
parent
,
field_name
):
super
(
RelatedField
,
self
)
.
initialize
(
parent
,
field_name
)
if
self
.
queryset
is
None
and
not
self
.
read_only
:
try
:
manager
=
getattr
(
self
.
parent
.
opts
.
model
,
self
.
source
or
field_name
)
if
hasattr
(
manager
,
'related'
):
# Forward
self
.
queryset
=
manager
.
related
.
model
.
_default_manager
.
all
()
else
:
# Reverse
self
.
queryset
=
manager
.
field
.
rel
.
to
.
_default_manager
.
all
()
except
Exception
:
msg
=
(
'Serializer related fields must include a `queryset`'
+
' argument or set `read_only=True'
)
raise
Exception
(
msg
)
manager
=
getattr
(
self
.
parent
.
opts
.
model
,
self
.
source
or
field_name
)
if
hasattr
(
manager
,
'related'
):
# Forward
self
.
queryset
=
manager
.
related
.
model
.
_default_manager
.
all
()
else
:
# Reverse
self
.
queryset
=
manager
.
field
.
rel
.
to
.
_default_manager
.
all
()
### We need this stuff to make form choices work...
...
...
rest_framework/tests/test_relations.py
View file @
2ecd9841
...
...
@@ -98,3 +98,23 @@ class RelatedFieldSourceTests(TestCase):
obj
=
ClassWithQuerysetMethod
()
value
=
field
.
field_to_native
(
obj
,
'field_name'
)
self
.
assertEqual
(
value
,
[
'BlogPost object'
])
# Regression for #1129
def
test_exception_for_incorect_fk
(
self
):
"""
Check that the exception message are correct if the source field
doesn't exist.
"""
from
rest_framework.tests.models
import
ManyToManySource
class
Meta
:
model
=
ManyToManySource
attrs
=
{
'name'
:
serializers
.
SlugRelatedField
(
slug_field
=
'name'
,
source
=
'banzai'
),
'Meta'
:
Meta
,
}
TestSerializer
=
type
(
str
(
'TestSerializer'
),
(
serializers
.
ModelSerializer
,),
attrs
)
with
self
.
assertRaises
(
AttributeError
):
TestSerializer
(
data
=
{
'name'
:
'foo'
})
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