mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Add property_fields for marking fields as model properties
This commit is contained in:
parent
afc9e9e038
commit
20b784bab4
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user