From fc0d55000d335ad19acba4cdafc7a4f4b1b02bd1 Mon Sep 17 00:00:00 2001 From: Ignat Shining Date: Tue, 15 Aug 2017 17:00:06 +0300 Subject: [PATCH] Schema overriding support --- rest_framework/fields.py | 5 ++++- rest_framework/schemas.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 9cc9ab03f..eaea8c871 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -309,7 +309,7 @@ class Field(object): def __init__(self, read_only=False, write_only=False, required=None, default=empty, initial=empty, source=None, - label=None, help_text=None, style=None, + label=None, help_text=None, schema=None, style=None, error_messages=None, validators=None, allow_null=False): self._creation_counter = Field._creation_counter Field._creation_counter += 1 @@ -342,6 +342,9 @@ class Field(object): if validators is not None: self.validators = validators[:] + if schema is not None: + self.schema = schema + # These are set up by `.bind()` when the field is added to a serializer. self.field_name = None self.parent = None diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index 875f9454b..37b7ce302 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -27,6 +27,9 @@ header_regex = re.compile('^[a-zA-Z][0-9A-Za-z_]*:') def field_to_schema(field): + if hasattr(field, 'schema'): + return field.schema + title = force_text(field.label) if field.label else '' description = force_text(field.help_text) if field.help_text else ''