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
ad214976
Commit
ad214976
authored
Oct 04, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #278 from tomchristie/related-field-fixes
Related field fixes
parents
0a769f26
d79e1896
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
118 additions
and
17 deletions
+118
-17
docs/api-guide/fields.md
+43
-0
rest_framework/tests/models.py
+20
-11
rest_framework/tests/serializer.py
+55
-6
No files found.
docs/api-guide/fields.md
0 → 100644
View file @
ad214976
<a
class=
"github"
href=
"fields.py"
></a>
# Serializer fields
> Flat is better than nested.
>
> — [The Zen of Python][cite]
# Generic Fields
## Field
## ModelField
# Typed Fields
## BooleanField
## CharField
## EmailField
## DateField
## DateTimeField
## IntegerField
## FloatField
# Relational Fields
Relational fields are used to represent model relationships.
## PrimaryKeyRelatedField
## ManyPrimaryKeyRelatedField
## HyperlinkedRelatedField
## ManyHyperlinkedRelatedField
[
cite
]:
http://www.python.org/dev/peps/pep-0020/
rest_framework/tests/models.py
View file @
ad214976
...
@@ -28,25 +28,34 @@ from django.db import models
...
@@ -28,25 +28,34 @@ from django.db import models
# 'pk': self.id
# 'pk': self.id
# })
# })
class
Anchor
(
models
.
Model
):
def
foobar
():
return
'foobar'
class
RESTFrameworkModel
(
models
.
Model
):
"""
"""
A simple model to use as the target of relationships for other test models
.
Base for test models that sets app_label, so they play nicely
.
"""
"""
text
=
models
.
CharField
(
max_length
=
100
,
default
=
'anchor'
)
class
Meta
:
class
Meta
:
app_label
=
'rest_framework'
app_label
=
'rest_framework'
abstract
=
True
class
BasicModel
(
models
.
Model
):
class
Anchor
(
RESTFrameworkModel
):
text
=
models
.
CharField
(
max_length
=
100
,
default
=
'anchor'
)
class
BasicModel
(
RESTFrameworkModel
):
text
=
models
.
CharField
(
max_length
=
100
)
text
=
models
.
CharField
(
max_length
=
100
)
class
Meta
:
app_label
=
'rest_framework'
class
DefaultValueModel
(
RESTFrameworkModel
):
text
=
models
.
CharField
(
default
=
'foobar'
,
max_length
=
100
)
class
ManyToManyModel
(
models
.
Model
):
rel
=
models
.
ManyToManyField
(
Anchor
)
class
Meta
:
class
CallableDefaultValueModel
(
RESTFrameworkModel
):
app_label
=
'rest_framework'
text
=
models
.
CharField
(
default
=
foobar
,
max_length
=
100
)
class
ManyToManyModel
(
RESTFrameworkModel
):
rel
=
models
.
ManyToManyField
(
Anchor
)
rest_framework/tests/serializer.py
View file @
ad214976
...
@@ -202,9 +202,58 @@ class ManyToManyTests(TestCase):
...
@@ -202,9 +202,58 @@ class ManyToManyTests(TestCase):
self
.
assertEquals
(
instance
.
pk
,
2
)
self
.
assertEquals
(
instance
.
pk
,
2
)
self
.
assertEquals
(
list
(
instance
.
rel
.
all
()),
[])
self
.
assertEquals
(
list
(
instance
.
rel
.
all
()),
[])
# def test_deserialization_for_update(self):
# serializer = self.serializer_class(self.data, instance=self.instance)
class
DefaultValueTests
(
TestCase
):
# expected = self.instance
def
setUp
(
self
):
# self.assertEquals(serializer.is_valid(), True)
class
DefaultValueSerializer
(
serializers
.
ModelSerializer
):
# self.assertEquals(serializer.object, expected)
class
Meta
:
# self.assertTrue(serializer.object is expected)
model
=
DefaultValueModel
self
.
serializer_class
=
DefaultValueSerializer
self
.
objects
=
DefaultValueModel
.
objects
def
test_create_using_default
(
self
):
data
=
{}
serializer
=
self
.
serializer_class
(
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
self
.
assertEquals
(
len
(
self
.
objects
.
all
()),
1
)
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
text
,
'foobar'
)
def
test_create_overriding_default
(
self
):
data
=
{
'text'
:
'overridden'
}
serializer
=
self
.
serializer_class
(
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
self
.
assertEquals
(
len
(
self
.
objects
.
all
()),
1
)
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
text
,
'overridden'
)
class
CallableDefaultValueTests
(
TestCase
):
def
setUp
(
self
):
class
CallableDefaultValueSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
CallableDefaultValueModel
self
.
serializer_class
=
CallableDefaultValueSerializer
self
.
objects
=
CallableDefaultValueModel
.
objects
def
test_create_using_default
(
self
):
data
=
{}
serializer
=
self
.
serializer_class
(
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
self
.
assertEquals
(
len
(
self
.
objects
.
all
()),
1
)
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
text
,
'foobar'
)
def
test_create_overriding_default
(
self
):
data
=
{
'text'
:
'overridden'
}
serializer
=
self
.
serializer_class
(
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
self
.
assertEquals
(
len
(
self
.
objects
.
all
()),
1
)
self
.
assertEquals
(
instance
.
pk
,
1
)
self
.
assertEquals
(
instance
.
text
,
'overridden'
)
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