This commit is contained in:
Henry Clifford 2013-06-06 00:59:22 -07:00
commit a72f37bb20

View File

@ -546,6 +546,7 @@ class ModelSerializerOptions(SerializerOptions):
super(ModelSerializerOptions, self).__init__(meta) super(ModelSerializerOptions, self).__init__(meta)
self.model = getattr(meta, 'model', None) self.model = getattr(meta, 'model', None)
self.read_only_fields = getattr(meta, 'read_only_fields', ()) self.read_only_fields = getattr(meta, 'read_only_fields', ())
self.property_fields = getattr(meta, 'property_fields', ())
class ModelSerializer(Serializer): class ModelSerializer(Serializer):
@ -693,6 +694,10 @@ class ModelSerializer(Serializer):
(self.__class__.__name__, field_name) (self.__class__.__name__, field_name)
ret[field_name].read_only = True 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 return ret
def get_pk_field(self, model_field): def get_pk_field(self, model_field):
@ -733,6 +738,9 @@ class ModelSerializer(Serializer):
return PrimaryKeyRelatedField(**kwargs) return PrimaryKeyRelatedField(**kwargs)
def get_property_field(self, model_property):
return CharField(read_only=True, source=model_property)
def get_field(self, model_field): def get_field(self, model_field):
""" """
Creates a default instance of a basic non-relational field. Creates a default instance of a basic non-relational field.