From cc119d6d3d07e69826bb6ced909fe4e45d78f13b Mon Sep 17 00:00:00 2001 From: Lucas Paim Date: Thu, 11 May 2017 11:11:56 -0300 Subject: [PATCH] add QueryParamField support to auto-generated documentation --- rest_framework/fields.py | 4 ++++ rest_framework/schemas.py | 4 +++- rest_framework/serializers.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 41d6105ca..8649881b5 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -767,6 +767,10 @@ class CharField(Field): return six.text_type(value) +class QueryParamField(CharField): + pass + + class EmailField(CharField): default_error_messages = { 'invalid': _('Enter a valid email address.') diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index afab8f71f..ce90b437e 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -590,10 +590,12 @@ class SchemaGenerator(object): if field.read_only or isinstance(field, serializers.HiddenField): continue + location = 'query' if isinstance(field, serializers.QueryParamField) else 'form' + required = field.required and method != 'PATCH' field = coreapi.Field( name=field.field_name, - location='form', + location=location, required=required, schema=field_to_schema(field) ) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 5bd9b6473..c4f49f0a2 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -57,7 +57,7 @@ from rest_framework.fields import ( # NOQA # isort:skip DictField, DurationField, EmailField, Field, FileField, FilePathField, FloatField, HiddenField, IPAddressField, ImageField, IntegerField, JSONField, ListField, ModelField, MultipleChoiceField, NullBooleanField, ReadOnlyField, RegexField, - SerializerMethodField, SlugField, TimeField, URLField, UUIDField, + SerializerMethodField, SlugField, TimeField, URLField, UUIDField, QueryParamField, ) from rest_framework.relations import ( # NOQA # isort:skip HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField,