From abc9b98344a2101abe116078ccc0c3178c695491 Mon Sep 17 00:00:00 2001 From: Henry Clifford Date: Wed, 5 Jun 2013 17:26:46 -0400 Subject: [PATCH] Add property_fields for marking fields as model properties --- rest_framework/serializers.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 11ead02e4..0ca8769ed 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -546,6 +546,7 @@ class ModelSerializerOptions(SerializerOptions): super(ModelSerializerOptions, self).__init__(meta) self.model = getattr(meta, 'model', None) self.read_only_fields = getattr(meta, 'read_only_fields', ()) + self.property_fields = getattr(meta, 'property_fields', ()) class ModelSerializer(Serializer): @@ -693,6 +694,10 @@ class ModelSerializer(Serializer): (self.__class__.__name__, field_name) ret[field_name].read_only = True + # For each of the `property_fields` construct a field + for property_name in self.opts.property_fields: + ret[property_name] = self.get_property_field(property_name) + return ret def get_pk_field(self, model_field): @@ -733,6 +738,9 @@ class ModelSerializer(Serializer): return PrimaryKeyRelatedField(**kwargs) + def get_property_field(self, model_property): + return CharField(read_only=True, source=model_property) + def get_field(self, model_field): """ Creates a default instance of a basic non-relational field.