This commit is contained in:
Tony Thomas 2017-10-23 07:52:34 +00:00 committed by GitHub
commit 90fbc9179e
2 changed files with 15 additions and 0 deletions

View File

@ -1844,3 +1844,17 @@ class ModelField(Field):
if is_protected_type(value): if is_protected_type(value):
return value return value
return self.model_field.value_to_string(obj) return self.model_field.value_to_string(obj)
class ExternalModelField(ModelField):
"""
Create a modelfield of an extenral class by accepting the class name as an
argument.
This can help a lot while creating complex nested serializers
"""
def __init__(self, model_name, model_field, **kwargs):
super(ExternalModelField, self).__init__(
model_field=model_name()._meta.get_field(model_field),
**kwargs
)

View File

@ -57,6 +57,7 @@ from rest_framework.fields import ( # NOQA # isort:skip
HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField, HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField,
ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField, ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField,
SerializerMethodField, SlugField, TimeField, URLField, UUIDField, SerializerMethodField, SlugField, TimeField, URLField, UUIDField,
ExternalModelField
) )
from rest_framework.relations import ( # NOQA # isort:skip from rest_framework.relations import ( # NOQA # isort:skip
HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField, HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField,