mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
Small naming corrections and errors fixed
This commit is contained in:
parent
de3400f608
commit
3425dfd801
|
@ -360,7 +360,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.include_reversed_relations = getattr(meta, 'include_reversed_relations', False)
|
self.include_reverse_relations = getattr(meta, 'include_reverse_relations', False)
|
||||||
|
|
||||||
|
|
||||||
class ModelSerializer(Serializer):
|
class ModelSerializer(Serializer):
|
||||||
|
@ -369,6 +369,10 @@ class ModelSerializer(Serializer):
|
||||||
"""
|
"""
|
||||||
_options_class = ModelSerializerOptions
|
_options_class = ModelSerializerOptions
|
||||||
|
|
||||||
|
def get_reverse_fields(self, opts, fields):
|
||||||
|
relations = [obj for obj in opts.get_all_related_many_to_many_objects() if obj.field.serialize]
|
||||||
|
return [rel.field for rel in relations]
|
||||||
|
|
||||||
def get_default_fields(self):
|
def get_default_fields(self):
|
||||||
"""
|
"""
|
||||||
Return all the fields that should be serialized for the model.
|
Return all the fields that should be serialized for the model.
|
||||||
|
@ -383,11 +387,10 @@ class ModelSerializer(Serializer):
|
||||||
fields += [field for field in opts.fields if field.serialize]
|
fields += [field for field in opts.fields if field.serialize]
|
||||||
fields += [field for field in opts.many_to_many if field.serialize]
|
fields += [field for field in opts.many_to_many if field.serialize]
|
||||||
|
|
||||||
reversed_fields = ()
|
reverse_fields = []
|
||||||
if self.opts.include_reversed_relations:
|
if self.opts.include_reverse_relations:
|
||||||
reversed_fields = [obj.field for obj in opts.get_all_related_objects() if obj.field.serialize]
|
reverse_fields = self.get_reverse_fields(opts, fields)
|
||||||
reversed_fields = [obj.field for obj in opts.get_all_related_many_to_many_objects() if obj.field.serialize]
|
fields += reverse_fields
|
||||||
fields += reversed_fields
|
|
||||||
|
|
||||||
ret = SortedDict()
|
ret = SortedDict()
|
||||||
nested = bool(self.opts.depth)
|
nested = bool(self.opts.depth)
|
||||||
|
@ -407,7 +410,7 @@ class ModelSerializer(Serializer):
|
||||||
field = self.get_field(model_field)
|
field = self.get_field(model_field)
|
||||||
|
|
||||||
if field:
|
if field:
|
||||||
if model_field in reversed_fields:
|
if model_field in reverse_fields:
|
||||||
ret[model_field.rel.related_name] = field
|
ret[model_field.rel.related_name] = field
|
||||||
else:
|
else:
|
||||||
ret[model_field.name] = field
|
ret[model_field.name] = field
|
||||||
|
@ -431,8 +434,14 @@ class ModelSerializer(Serializer):
|
||||||
Creates a default instance of a nested relational field.
|
Creates a default instance of a nested relational field.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# If field is reversed relation, get model from relation
|
# Field has reverse relation if it's referring to different model
|
||||||
obj_model = model_field.rel.to if self.opts.model is not model_field.rel.to else model_field.model
|
if self.opts.model is not model_field.rel.to:
|
||||||
|
# Get correct model from the relation
|
||||||
|
obj_model = model_field.rel.to
|
||||||
|
else:
|
||||||
|
# Forward relation, no need for magic
|
||||||
|
obj_model = model_field.model
|
||||||
|
|
||||||
class NestedModelSerializer(ModelSerializer):
|
class NestedModelSerializer(ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = obj_model
|
model = obj_model
|
||||||
|
|
Loading…
Reference in New Issue
Block a user