mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 12:00:12 +03:00
Merge 786fae2c85
into 1f3ded4559
This commit is contained in:
commit
5be65a47ce
|
@ -142,6 +142,7 @@ class SerializerOptions(object):
|
||||||
self.depth = getattr(meta, 'depth', 0)
|
self.depth = getattr(meta, 'depth', 0)
|
||||||
self.fields = getattr(meta, 'fields', ())
|
self.fields = getattr(meta, 'fields', ())
|
||||||
self.exclude = getattr(meta, 'exclude', ())
|
self.exclude = getattr(meta, 'exclude', ())
|
||||||
|
self.write_only_fields = getattr(meta, 'write_only_fields', ())
|
||||||
|
|
||||||
|
|
||||||
class BaseSerializer(WritableField):
|
class BaseSerializer(WritableField):
|
||||||
|
@ -320,14 +321,18 @@ class BaseSerializer(WritableField):
|
||||||
for field_name, field in self.fields.items():
|
for field_name, field in self.fields.items():
|
||||||
if field.read_only and obj is None:
|
if field.read_only and obj is None:
|
||||||
continue
|
continue
|
||||||
field.initialize(parent=self, field_name=field_name)
|
elif field_name in getattr(self.opts, 'write_only_fields', ()):
|
||||||
key = self.get_field_key(field_name)
|
key = self.get_field_key(field_name)
|
||||||
value = field.field_to_native(obj, field_name)
|
ret.fields[key] = self.augment_field(field, field_name, key, '')
|
||||||
method = getattr(self, 'transform_%s' % field_name, None)
|
else:
|
||||||
if callable(method):
|
field.initialize(parent=self, field_name=field_name)
|
||||||
value = method(obj, value)
|
key = self.get_field_key(field_name)
|
||||||
ret[key] = value
|
value = field.field_to_native(obj, field_name)
|
||||||
ret.fields[key] = self.augment_field(field, field_name, key, value)
|
method = getattr(self, 'transform_%s' % field_name, None)
|
||||||
|
if callable(method):
|
||||||
|
value = method(obj, value)
|
||||||
|
ret[key] = value
|
||||||
|
ret.fields[key] = self.augment_field(field, field_name, key, value)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@ -874,6 +879,8 @@ class ModelSerializer(Serializer):
|
||||||
"""
|
"""
|
||||||
Restore the model instance.
|
Restore the model instance.
|
||||||
"""
|
"""
|
||||||
|
attrs = dict((k,v) for (k,v) in filter(
|
||||||
|
lambda x:x not in getattr(self.opts, 'write_only_fields', ()), attrs.items()))
|
||||||
m2m_data = {}
|
m2m_data = {}
|
||||||
related_data = {}
|
related_data = {}
|
||||||
nested_forward_relations = {}
|
nested_forward_relations = {}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user