aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorTom Christie2013-01-12 09:43:07 +0000
committerTom Christie2013-01-12 09:43:14 +0000
commitd9acec3e6dd07d33f416646bc161108ea52842d6 (patch)
treee8d9ec9712c35621b780d7452bb27f7029425800 /rest_framework/serializers.py
parent73c4e5c4603e24ec1ea9976a3c6152a797f8f041 (diff)
downloaddjango-rest-framework-d9acec3e6dd07d33f416646bc161108ea52842d6.tar.bz2
PK fields should only be read-only if they are an AutoField. Fixes #563
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 0bacacda..27458f96 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -415,7 +415,7 @@ class ModelSerializer(Serializer):
"""
Returns a default instance of the pk field.
"""
- return Field()
+ return self.get_field(model_field)
def get_nested_field(self, model_field):
"""
@@ -452,7 +452,7 @@ class ModelSerializer(Serializer):
if model_field.null or model_field.blank:
kwargs['required'] = False
- if not model_field.editable:
+ if isinstance(model_field, models.AutoField) or not model_field.editable:
kwargs['read_only'] = True
if model_field.has_default():
@@ -468,6 +468,7 @@ class ModelSerializer(Serializer):
return ChoiceField(**kwargs)
field_mapping = {
+ models.AutoField: IntegerField,
models.FloatField: FloatField,
models.IntegerField: IntegerField,
models.PositiveIntegerField: IntegerField,