Add property_fields for marking fields as model properties

This commit is contained in:
Henry Clifford 2013-06-05 17:26:46 -04:00
parent afc9e9e038
commit 20b784bab4

View File

@ -555,6 +555,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):
@ -702,6 +703,10 @@ class ModelSerializer(Serializer):
(field_name, self.__class__.__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):
@ -742,6 +747,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.