aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2013-01-12 09:32:53 +0000
committerTom Christie2013-01-12 09:43:14 +0000
commit73c4e5c4603e24ec1ea9976a3c6152a797f8f041 (patch)
treeb0cde9e6d3e7c0b9aa6c1b0bed1c4e9217100daf
parent919c5e1e01106918af9f26c506c2198fbf731923 (diff)
downloaddjango-rest-framework-73c4e5c4603e24ec1ea9976a3c6152a797f8f041.tar.bz2
auto_now and auto_now_add fields should be read only by default
-rw-r--r--rest_framework/serializers.py3
-rw-r--r--rest_framework/tests/fields.py26
2 files changed, 29 insertions, 0 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index da0af467..0bacacda 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -452,6 +452,9 @@ class ModelSerializer(Serializer):
if model_field.null or model_field.blank:
kwargs['required'] = False
+ if not model_field.editable:
+ kwargs['read_only'] = True
+
if model_field.has_default():
kwargs['required'] = False
kwargs['default'] = model_field.get_default()
diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/fields.py
new file mode 100644
index 00000000..b1a8161a
--- /dev/null
+++ b/rest_framework/tests/fields.py
@@ -0,0 +1,26 @@
+"""
+General tests for relational fields.
+"""
+
+from django.db import models
+from django.test import TestCase
+from rest_framework import serializers
+
+
+class TimestampedModel(models.Model):
+ added = models.DateTimeField(auto_now_add=True)
+ updated = models.DateTimeField(auto_now=True)
+
+
+class TimestampedModelSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = TimestampedModel
+
+
+class ReadOnlyFieldTests(TestCase):
+ def test_auto_now_fields_read_only(self):
+ """
+ auto_now and auto_now_add fields should be readonly by default.
+ """
+ serializer = TimestampedModelSerializer()
+ self.assertEquals(serializer.fields['added'].read_only, True)