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
d9acec3e
Commit
d9acec3e
authored
Jan 12, 2013
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PK fields should only be read-only if they are an AutoField. Fixes #563
parent
73c4e5c4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
2 deletions
+20
-2
rest_framework/serializers.py
+3
-2
rest_framework/tests/fields.py
+17
-0
No files found.
rest_framework/serializers.py
View file @
d9acec3e
...
@@ -415,7 +415,7 @@ class ModelSerializer(Serializer):
...
@@ -415,7 +415,7 @@ class ModelSerializer(Serializer):
"""
"""
Returns a default instance of the pk field.
Returns a default instance of the pk field.
"""
"""
return
Field
(
)
return
self
.
get_field
(
model_field
)
def
get_nested_field
(
self
,
model_field
):
def
get_nested_field
(
self
,
model_field
):
"""
"""
...
@@ -452,7 +452,7 @@ class ModelSerializer(Serializer):
...
@@ -452,7 +452,7 @@ class ModelSerializer(Serializer):
if
model_field
.
null
or
model_field
.
blank
:
if
model_field
.
null
or
model_field
.
blank
:
kwargs
[
'required'
]
=
False
kwargs
[
'required'
]
=
False
if
not
model_field
.
editable
:
if
isinstance
(
model_field
,
models
.
AutoField
)
or
not
model_field
.
editable
:
kwargs
[
'read_only'
]
=
True
kwargs
[
'read_only'
]
=
True
if
model_field
.
has_default
():
if
model_field
.
has_default
():
...
@@ -468,6 +468,7 @@ class ModelSerializer(Serializer):
...
@@ -468,6 +468,7 @@ class ModelSerializer(Serializer):
return
ChoiceField
(
**
kwargs
)
return
ChoiceField
(
**
kwargs
)
field_mapping
=
{
field_mapping
=
{
models
.
AutoField
:
IntegerField
,
models
.
FloatField
:
FloatField
,
models
.
FloatField
:
FloatField
,
models
.
IntegerField
:
IntegerField
,
models
.
IntegerField
:
IntegerField
,
models
.
PositiveIntegerField
:
IntegerField
,
models
.
PositiveIntegerField
:
IntegerField
,
...
...
rest_framework/tests/fields.py
View file @
d9acec3e
...
@@ -12,11 +12,20 @@ class TimestampedModel(models.Model):
...
@@ -12,11 +12,20 @@ class TimestampedModel(models.Model):
updated
=
models
.
DateTimeField
(
auto_now
=
True
)
updated
=
models
.
DateTimeField
(
auto_now
=
True
)
class
CharPrimaryKeyModel
(
models
.
Model
):
id
=
models
.
CharField
(
max_length
=
20
,
primary_key
=
True
)
class
TimestampedModelSerializer
(
serializers
.
ModelSerializer
):
class
TimestampedModelSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
class
Meta
:
model
=
TimestampedModel
model
=
TimestampedModel
class
CharPrimaryKeyModelSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
CharPrimaryKeyModel
class
ReadOnlyFieldTests
(
TestCase
):
class
ReadOnlyFieldTests
(
TestCase
):
def
test_auto_now_fields_read_only
(
self
):
def
test_auto_now_fields_read_only
(
self
):
"""
"""
...
@@ -24,3 +33,11 @@ class ReadOnlyFieldTests(TestCase):
...
@@ -24,3 +33,11 @@ class ReadOnlyFieldTests(TestCase):
"""
"""
serializer
=
TimestampedModelSerializer
()
serializer
=
TimestampedModelSerializer
()
self
.
assertEquals
(
serializer
.
fields
[
'added'
]
.
read_only
,
True
)
self
.
assertEquals
(
serializer
.
fields
[
'added'
]
.
read_only
,
True
)
def
test_auto_pk_fields_read_only
(
self
):
serializer
=
TimestampedModelSerializer
()
self
.
assertEquals
(
serializer
.
fields
[
'id'
]
.
read_only
,
True
)
def
test_non_auto_pk_fields_not_read_only
(
self
):
serializer
=
CharPrimaryKeyModelSerializer
()
self
.
assertEquals
(
serializer
.
fields
[
'id'
]
.
read_only
,
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