mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-23 06:29:58 +03:00
clean up 'pk' getattr,
add the ability to specify which model fields are read_only in bulk
This commit is contained in:
parent
10ed127df1
commit
dc3ecb85bb
|
@ -73,6 +73,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.read_only_fields = getattr(meta, 'read_only_fields', ())
|
||||||
|
|
||||||
|
|
||||||
class BaseSerializer(Field):
|
class BaseSerializer(Field):
|
||||||
|
@ -124,14 +125,14 @@ class BaseSerializer(Field):
|
||||||
# Add in the default fields
|
# Add in the default fields
|
||||||
fields = self.default_fields(serialize, obj, data, nested)
|
fields = self.default_fields(serialize, obj, data, nested)
|
||||||
for key, val in fields.items():
|
for key, val in fields.items():
|
||||||
|
if key in self.opts.read_only_fields:
|
||||||
|
val.read_only = True
|
||||||
|
|
||||||
if key not in ret:
|
if key not in ret:
|
||||||
ret[key] = val
|
ret[key] = val
|
||||||
try:
|
|
||||||
# Test if field was marked as pk_field
|
# Test if field was marked as pk_field
|
||||||
if getattr(val, 'is_pk_field'):
|
if getattr(val, 'is_pk_field', None):
|
||||||
pk_field = key
|
pk_field = key
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# If 'fields' is specified, use those fields, in that order.
|
# If 'fields' is specified, use those fields, in that order.
|
||||||
if self.opts.fields:
|
if self.opts.fields:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user