diff options
| author | Tom Christie | 2012-11-09 17:01:20 +0000 |
|---|---|---|
| committer | Tom Christie | 2012-11-09 17:01:20 +0000 |
| commit | e224061189a6a5ea2c063f3820239eed6c3a88fb (patch) | |
| tree | a678827879e7fc25f612c55185c29ed44bdae8da /rest_framework/serializers.py | |
| parent | d365621cbeb333d857dd312147edd5cd076866e8 (diff) | |
| download | django-rest-framework-e224061189a6a5ea2c063f3820239eed6c3a88fb.tar.bz2 | |
Support for `read_only_fields` on `ModelSerializer` classes
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 95145d58..329b38f2 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -321,6 +321,7 @@ class ModelSerializerOptions(SerializerOptions): def __init__(self, meta): super(ModelSerializerOptions, self).__init__(meta) self.model = getattr(meta, 'model', None) + self.read_only_fields = getattr(meta, 'read_only_fields', ()) class ModelSerializer(Serializer): @@ -369,6 +370,12 @@ class ModelSerializer(Serializer): field.initialize(parent=self, field_name=model_field.name) ret[model_field.name] = field + for field_name in self.opts.read_only_fields: + assert field_name in ret, \ + "read_only_fields on '%s' included invalid item '%s'" % \ + (self.__class__.__name__, field_name) + ret[field_name].read_only = True + return ret def get_pk_field(self, model_field): |
