diff options
| author | Tom Christie | 2013-01-12 09:32:53 +0000 | 
|---|---|---|
| committer | Tom Christie | 2013-01-12 09:43:14 +0000 | 
| commit | 73c4e5c4603e24ec1ea9976a3c6152a797f8f041 (patch) | |
| tree | b0cde9e6d3e7c0b9aa6c1b0bed1c4e9217100daf | |
| parent | 919c5e1e01106918af9f26c506c2198fbf731923 (diff) | |
| download | django-rest-framework-73c4e5c4603e24ec1ea9976a3c6152a797f8f041.tar.bz2 | |
auto_now and auto_now_add fields should be read only by default
| -rw-r--r-- | rest_framework/serializers.py | 3 | ||||
| -rw-r--r-- | rest_framework/tests/fields.py | 26 | 
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)  | 
