From c412de920efc194c39b4483d8a2ea85a6f25a282 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 28 Feb 2017 10:39:21 +0000 Subject: [PATCH] Ensure fields in docs forms are ordered --- rest_framework/schemas.py | 6 +++--- rest_framework/templatetags/rest_framework.py | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index 844bcc5da..b88f95d19 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -39,11 +39,11 @@ def field_to_schema(field): ) elif isinstance(field, serializers.Serializer): return coreschema.Object( - properties={ - key: field_to_schema(value) + properties=OrderedDict([ + (key, field_to_schema(value)) for key, value in field.fields.items() - }, + ]), title=title, description=description ) diff --git a/rest_framework/templatetags/rest_framework.py b/rest_framework/templatetags/rest_framework.py index a83b58700..4891f625f 100644 --- a/rest_framework/templatetags/rest_framework.py +++ b/rest_framework/templatetags/rest_framework.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals import re +from collections import OrderedDict from django import template from django.template import loader from django.utils import six @@ -76,10 +77,10 @@ def with_location(fields, location): @register.simple_tag def form_for_link(link): import coreschema - properties = { - field.name: field.schema or coreschema.String() + properties = OrderedDict([ + (field.name, field.schema or coreschema.String()) for field in link.fields - } + ]) required = [ field.name for field in link.fields