Примечания к выпуску¶
Версионирование¶
Минорные номера версий (0.0.x) используются для изменений, совместимых с API. Вы должны иметь возможность переходить от одной минорной версии к другой без каких-либо других изменений кода.
Средние номера версий (0.x.0) могут включать изменения API, в соответствии с deprecation policy. Перед обновлением между средними версиями следует внимательно прочитать примечания к выпуску.
Основные номера версий (x.0.0) зарезервированы для существенных этапов проекта.
Политика амортизации¶
Релизы фреймворка REST следуют формальной политике обесценивания, которая соответствует Django’s deprecation policy.
Временная шкала устаревания функции, присутствующей в версии 1.0, будет выглядеть следующим образом:
- Версия 1.1 останется полностью обратно совместимой с 1.0, но будет выдавать - RemovedInDRF13Warningпредупреждения, подклассы- PendingDeprecationWarning, если вы используете функции, которые должны быть устаревшими. Эти предупреждения молчащие по умолчанию , но могут быть явно включены, когда вы будете готовы начать перенос необходимых изменений. Например, если вы начнете проводить тесты, используя- python -Wd manage.py test, вы будете предупреждены о любых изменениях в API, которые вам необходимо сделать.
- Версия 1.2 переводит эти предупреждения в подкласс - DeprecationWarning, который по умолчанию является громким.
- Версия 1.3 полностью удалит устаревшие части API. 
Обратите внимание, что в соответствии с политикой Django, любые части фреймворка, не упомянутые в документации, следует рассматривать как частные API, и они могут быть изменены.
Обновление¶
Чтобы обновить фреймворк Django REST до последней версии, используйте pip:
pip install -U djangorestframework
Вы можете определить текущую установленную версию, используя pip show :
pip show djangorestframework
Серия 3.12.x¶
3.12.4¶
Дата: 26 марта 2021 года
- Верните использование - dequeвместо- listдля отслеживания дросселирования- .history. (Из-за несовместимости с бэкендом кэша DjangoRedis. См. #7870) [#7872].
3.12.3¶
Дата: 25 марта 2021 года
- Правильная обработка ATOMIC_REQUESTS при использовании нескольких конфигураций базы данных. [#7739] 
- Обход запроса - COUNT, когда настроен- LimitOffsetPagination, но параметры пагинации не включены в запрос. [#6098]
- Уважение - allow_null=Trueна- DecimalField. [#7718]
- Разрешить заглавные - "Yes"/**- "No"значения с- BooleanField. [#7739]
- Добавьте метод - PageNumberPagination.get_page_number()для переопределения поведения. [#7652]
- Исправлено отображение значений timedelta в схемах OpenAPI, когда они присутствуют как поля по умолчанию, min или max. [#7641] 
- Отображение JSON-полей с отступами в просматриваемых формах API. [#6243] 
- Удалите ненужный запрос к базе данных в представлениях admin Token. [#7852] 
- Вызывать ошибки валидации, когда в поля - PrimaryKeyRelatedFieldпередаются bools, вместо приведения к ints. [#7597]
- Не включайте свойства модели в качестве автоматически генерируемых полей упорядочивания с - OrderingFilter. [#7609]
- Используйте - dequeвместо- listдля отслеживания дросселирования- .history. [#7849]
3.12.2¶
Дата: 13 октября 2020 года
- Исправление проблемы, если - rest_framework.authtoken.modelsимпортирован, но- rest_framework.authtokenотсутствует в INSTALLED_APPS. [#7571]
- Игнорировать подклассы BrowsableAPIRenderer в схеме OpenAPI. [#7497] 
- Более узкий отлов исключений в полях serilizer, чтобы гарантировать, что любые ошибки в неработающих методах - get_queryset()не будут замаскированы. [#7480]
3.12.0¶
Дата: 28 сентября 2020 года
- Добавьте опцию - --fileк команде- generateschema. [#7130]
- Поддержка - tagsдля генерации схем OpenAPI. См. the schema docs. [#7184]
- Поддержка настройки идентификатора операции для генерации схемы. См. the schema docs. [#7190] 
- Поддержка компонентов OpenAPI для генерации схем. См. the schema docs. [#7124] 
- Следующие методы на - AutoSchemaстановятся общедоступными API:- get_path_parameters,- get_pagination_parameters,- get_filter_parameters,- get_request_body,- get_responses,- get_serializer,- get_paginator,- map_serializer,- map_field,- map_choice_field,- map_field_validators,- allows_filters. См. the schema docs
- Добавьте поддержку базы данных-агностики в Django 3.1 - JSONField. [#7467]
- SearchFilterтеперь поддерживает вложенный поиск по полям модели- JSONFieldи- HStoreField. [#7121]
- SearchFilterтеперь поддерживает поиск по полям- annotate(). [#6240]
- Модель authtoken больше не раскрывает - pkв URL-адресе администратора. [#7341]
- Добавьте - __repr__для экземпляров запроса. [#7239]
- Декодирование UTF-8 с отступлением от Latin-1 для основных учетных данных. [#7193] 
- CharField обрабатывает суррогатные символы как ошибку валидации. [#7026] 
- Не включайте callables в схемы в качестве значений по умолчанию. [#7105] 
- Улучшите вывод схемы - ListField, чтобы она включала всю доступную информацию о дочерних элементах. [#7137]
- Разрешите включать - default=Falseдля выводов схемы- BooleanField. [#7165]
- Включите информацию - "type"в выводы схемы- ChoiceField. [#7161]
- Включите - "type": "object"в объекты схемы. [#7169]
- Не включайте компонент в вывод схемы для запросов DELETE. [#7229] 
- Исправьте типы схем для - DecimalField. [#7254]
- Исправьте генерацию схемы для представления - ObtainAuthToken. [#7211]
- Поддержка передачи - context=...в методы вида- .get_serializer(). [#7298]
- Передавайте пользовательский код в - PermissionDenied, если класс разрешения имеет один набор. [#7306]
- Включите «пример» в вывод пагинации схемы. [#7275] 
- Код состояния по умолчанию 201 при выводе схемы для POST-запросов. [#7206] 
- Используйте camelCase для идентификаторов операций при выводе схемы. [#7208] 
- Предупреждение о существовании дублирующихся идентификаторов операций в выводе схемы. [#7207] 
- Улучшена обработка десятичного типа при отображении - ChoiceFieldна вывод схемы. [#7264]
- Отключите псевдонимы YAML для вывода схем OpenAPI. [#7131] 
- Исправьте имена URL-адресов действий для API, включенных в URL с разделенными именами. [#7287] 
- Обновите версию jQuery с 3.4 до 3.5. [#7313] 
- Исправьте обработку - UniqueTogether, когда поля сериализатора используют- source=.... [#7143]
- HTTP - HEADзапросы теперь правильно устанавливают- self.actionна экземпляре ViewSet. [#7223]
- Возвращает действительную схему OpenAPI для случая, когда пути к схеме API не существует. [#7125] 
- Включите тесты в дистрибутив пакета. [#7145] 
- Разрешить средствам проверки типов поддерживать аннотации типа - ModelSerializer[Author]. [#7385]
- Не включайте недопустимую часть - charset=Noneв заголовок запроса- Content-Typeпри использовании APIClient. [#7400]
- Исправьте - Z/**- zтокены в регексах OpenAPI. [#7389]
- Исправьте - PrimaryKeyRelatedFieldи- HyperlinkedRelatedField, когда поле источника на самом деле является свойством. [#7142]
- Token.generate_keyтеперь является методом класса. [#7502]
- @actionпредупреждает, если метод обернут в декоратор, который не сохраняет информацию, используя- @functools.wraps. [#7098]
Серия 3.11.x¶
3.11.2¶
Дата: 30 сентября 2020 г.
- Безопасность: Отказ от тега шаблона - urlize_quoted_linksв пользу встроенного в Django- urlize. Устраняет XSS-уязвимость для некоторых видов контента в browsable API.
3.11.0¶
Дата: 12 декабря 2019 г.
- Drop - .set_contextAPI in favour of a ``requires_context:doc:` marker <3.11-announcement#validator-default-context>`.
- Виджет по умолчанию для текстового поля с вариантами выбора заменен на поле выбора. #6892 
- Поддерживается вложенная запись в нереляционные поля, такие как JSONField. #6916 
- Включение типов носителей запросов/ответов в схемы OpenAPI на основе настроенных парсеров/рендереров. #6865 
- Включать описания операций в схемы OpenAPI, основываясь на docstring представления. #6898 
- Исправьте представление сериализаторов со всеми необязательными полями в схемах OpenAPI. #6941 
- Исправьте представление - serializers.HStoreFieldв схемах OpenAPI. #6914
- Исправьте генерацию OpenAPI, когда не указаны название или версия. #6912 
- Используйте представление - int64для больших целых чисел в схемах OpenAPI. #7018
- Улучшены сообщения об ошибках, если в подклассе поля не предусмотрена реализация - .to_representation. #6996
- Исправление для классов сериализатора, использующих множественное наследование. #6980 
- Исправление реверсирования полей URL с гиперссылками с компонентами в процентном кодировании в пути. #7059 
- Обновите bootstrap до версии 3.4.1. #6923 
Серия 3.10.x¶
3.10.3¶
Дата: 4 сентября 2019 г.
- Включить версию API в генерацию схемы OpenAPI, по умолчанию - пустая строка. 
- Добавьте свойства пагинации в схемы ответов OpenAPI. 
- Добавьте отсутствующее свойство «description» в схемы ответов OpenAPI. 
- Включать «required» только для непустых случаев в схемах OpenAPI. 
- Исправьте схемы ответов для случая «DELETE» в схемах OpenAPI. 
- Используйте тип массива для схем ответов представления списка. 
- Используйте последовательный стиль - lowerInitialCamelCaseв идентификаторах операций OpenAPI.
- Исправьте - minLength/**- maxLength/**- minItems/**- maxItemsсвойства в схемах OpenAPI.
- Вызывайте - FileField.urlтолько один раз при сериализации для повышения производительности.
- Устранение побочного случая, когда расчеты дросселирования могли ошибаться после изменения конфигурации. 
3.10.2¶
Дата: 29 июля 2019 г.
- Различные исправления схемы - OpenAPI.
- Возможность указать urlconf в include_docs_urls. 
3.10.1¶
Дата: 17 июля 2019 г.
- Не включайте поля автозаполнения в TokenAuth admin, поскольку это накладывает ограничения на пользовательские модели пользователей и admin. 
- Требуется - uritemplateдля генерации схемы OpenAPI, но не- coreapi.
3.10.0¶
Дата : 15th July 2019
- Переключитесь на генерацию схемы OpenAPI. 
- Отказ от поддержки Python 2. 
- Добавить опцию CLI - generateschema --generator_class
- Обновлена зависимость PyYaml для генерации схемы OpenAPI до - pyyaml>=5.1#6680.
- Разрешить DeprecationWarning с помощью markdown. #6317 
- Используйте - user.get_usernameв шаблонах, предпочитая- user.username.
- Исправление проблемы с пагинацией курсора, которая могла возникнуть после удаления объектов. 
- Исправление для нулевых полей с - source="*"
- Всегда применяйте все классы дросселирования во время проверок дросселирования. 
- Обновление зависимостей jQuery и Markdown. 
- Не стоит строго запрещать избыточные аргументы имени поля - SerializerMethodField.
- Не выполняйте дополнительные действия в browable API, если вы не аутентифицированы. 
- Удаление нулевых символов из параметров поиска. 
- Утрачиваем декоратор - detail_routeв пользу- action, который принимает- detailbool. Вместо него используйте- @action(detail=True). gh6687
- Утрачиваем декоратор - list_routeв пользу- action, который принимает- detailbool. Вместо него используйте- @action(detail=False). gh6687
серия 3.9.x¶
3.9.4¶
Дата: 10 мая 2019 г.
Это поддерживающий выпуск, в котором исправлена ошибка обработки ошибок в Python 2.
3.9.3¶
Дата: 29 апреля 2019 г.
Это последний выпуск Django REST Framework, который будет поддерживать Python 2. Обязательно перейдите на Python 3 перед обновлением до Django REST Framework 3.10.
- Скорректирована проверка совместимости для django-guardian, чтобы последняя версия guardian (v1.4.9) была совместима с Python 2. #6613 
3.9.2¶
Дата : 3rd March 2019
- Маршрутизаторы: аннулировать кэш - _urlsна- register()#6407
- Отложите создание рендеринга схемы, чтобы избежать необходимости использования pyyaml. #6416 
- Добавлен блок „request_forms“ в base.html #6340 
- Исправлена функция SchemaView для сброса рендеринга при исключении. #6429 
- Обновление зависимости Django Guardian. #6430 
- Обеспечена поддержка Django 2.2 #6422 & #6455 
- Сделана совместимость шаблонов с сессионным CSRF. #6207 
- Поле - validatorsадаптировано для приема не списочных итераций. #6282
- Добавлен хук SearchFilter.get_search_fields(). #6279 
- Исправьте DeprecationWarning при обращении к классам collections.abc через collections #6268 
- Разрешенные Q-объекты в интроспекции limit_choices_to. #6472 
- Добавлена ленивая оценка для составленных разрешений. #6463 
- Добавьте оператор отрицания ~ к композиции разрешений #6361 
- Избегайте вызова distinct для аннотированных полей в SearchFilter. #6240 
- Введены классы - RemovedInDRF…Warningдля упрощения обесценивания. #6480
3.9.1¶
Дата : 16th January 2019
- Устранение проблемы XSS в просматриваемом API. #6330 
- Обновите Bootstrap до версии 3.4.0, чтобы решить проблему XSS. 
- Устранение проблем с композитными разрешениями. #6299 
- Соблюдать - limit_choices_toна внешних ключах. #6371
3.9.0¶
Дата : 18th October 2018
- Улучшения в дополнительных действиях ViewSet #5605 
- Исправить поддержку суффиксов ViewSet - action#6081
- Разрешить - actionразделы документации #6060
- Избавьтесь от аргумента - Router.register- base_nameв пользу- basename. #5990
- Избавьтесь от метода - Router.get_default_base_nameв пользу- Router.get_default_basename. #5990
- Измените - CharField, чтобы запретить нулевые байты. #6073 Чтобы вернуться к старому поведению, подкласс- CharFieldи удалите- ProhibitNullCharactersValidatorиз валидаторов. … code-block:: python
- Добавьте команды управления - OpenAPIRendererи- generate_schema. #6229
- Добавьте OpenAPIRenderer по умолчанию и добавьте документацию по схемам. #6233 
- Разрешить составление разрешений #5753 
- Разрешить nullable BooleanField в Django 2.1 #6183 
- Добавьте тестирование поддержки Python 3.7 #6141 
- Тестирование с использованием Django 2.1 финального релиза. #6109 
- Добавлен djangorestframework-datatables в пакеты сторонних разработчиков #5931 
- Изменить формат даты ISO 8601, чтобы исключить варианты только год/месяц #5936. 
- Обновите все URL-адреса pypi.python.org до pypi.org #5942. 
- Убедитесь, что в html-формах (данные многочастных форм) соблюдаются необязательные поля #5927. 
- Разрешить хэширование ErrorDetail. #5932 
- Корректный разбор схемы для JSONField #5878 
- Рендеринг описаний (из help_text) с использованием безопасного #5869 
- Удалено входное значение из deault_error_message #5881 
- Добавлена поддержка min_value/max_value в поле DurationField #5643 
- Исправлено перезаписывание экземпляра в блоке try/except оптимизации только для pk #5747. 
- Исправлена ошибка AttributeError в фильтре элементов, когда значение равно None #5981. 
- Исправлена ошибка Javascript - e.indexOfне является функцией #5982
- Исправьте схемы для дополнительных действий #5992 
- Улучшено get_error_detail для использования error_dict/error_list #5785 
- Улучшение URL-адресов в рендере Admin #5988 
- Добавить раздел «Сообщество» в документацию, незначительная очистка #5993. 
- Перемещение импорта опекунов из совместимости #6054 
- Утрачиваем класс - DjangoObjectPermissionsFilter, перемещенный в пакет- djangorestframework-guardian. #6075
- Отказаться от поддержки Django 1.10 #5657 
- Ловить только TypeError/ValueError для поиска объектов #6028 
- Работа с моделями без менеджера .objects в ModelSerializer. #6111 
- Улучшите сообщение об ошибке ModelSerializer.create(). #6112 
- Исправьте ошибку проверки куки CSRF при использовании session auth с django 1.11.6+ #6113 
- Обновлена документация по JWT. #6138 
- Исправление автоскейпа, не передаваемого в фильтр urlize_quoted_links #6191 
серия 3.8.x¶
3.8.2¶
Дата : 6th April 2018
- Исправьте валидацию - read_only+- default- unique_together. #5922
- authtoken.views import coreapi из rest_framework.compat, не напрямую. #5921 
- Документы: Добавьте недостающий аргумент „detail“ в Маршрут #5920 
3.8.1¶
Дата : 4th April 2018
- Используйте старое поведение - url_nameв декораторах маршрутов #5915- Для - list_routeи- detail_routeсохраняется старое поведение- url_name, основанное на- url_pathвместо имени функции.
3.8.0¶
Дата : 3rd April 2018
- Перемена: Изменить поведение - read_onlyплюс- default. #5886- Поля - read_onlyтеперь всегда будут исключаться из записываемых полей.- Ранее поля - read_onlyсо значением- defaultиспользовали- defaultдля операций создания и обновления.- Чтобы сохранить старое поведение, вам может понадобиться передать значение полей - read_onlyпри вызове- save()в представлении:- def perform_create(self, serializer): serializer.save(owner=self.request.user) Alternatively you may override ``save()`` or ``create()`` or ``update()`` on the serializer as appropriate.
- Исправьте поведение allow_null, когда required=False #5888 - Без явного - default,- allow_nullподразумевает значение по умолчанию- nullдля исходящей сериализации. Ранее такие поля пропускались, если были доступны только для чтения или не требовались.- Возможно нарушение обратной совместимости, если вы полагались на то, что такие поля будут исключены из исходящего представления. Чтобы восстановить старое поведение, вы можете переопределить - data, чтобы исключить поле, когда- None.- Например: - @property def data(self): """ Drop `maybe_none` field if None. """ data = super().data if 'maybe_none' in data and data['maybe_none'] is None: del data['maybe_none'] return data 
- Рефакторинг динамической генерации маршрутов и улучшение интроспективности действий набора представлений. #5705 - <<< 0 >>** s были предоставлены новые атрибуты и методы, которые позволяют ему интроспектировать свой набор действий и детали текущего действия. - Объединил - list_routeи- detail_routeв один декоратор- action.
- Получить все дополнительные действия на - ViewSetс- .get_extra_actions().
- Дополнительные действия теперь устанавливают - url_nameи- url_pathна декорированный метод.
- url_nameтеперь основывается на имени функции, вместо- url_path, так как путь не всегда подходит (например, перехват аргументов в пути).
- Включить реверсирование url действия через метод - .reverse_action()(добавлено в 3.7.4)
- Пример обратного вызова: - self.reverse_action(self.custom_action.url_name)
- Добавьте иниткварг - detail, чтобы указать, работает ли текущее действие с коллекцией или с одним экземпляром.- Дополнительные изменения: 
- Устранены - list_route&- detail_routeв пользу декоратора- actionс- detailboolean.
- Отменены варианты динамического списка/детального маршрута в пользу - DynamicRouteс булевой- detail.
- Переработана динамическая генерация маршрутов маршрутизатора. 
- list_routeи- detail_routeсохраняют старое поведение- url_name, основываясь на- url_pathвместо имени функции.
 
- Исправьте форматирование заметки о выпуске 3.7.4 #5704 
- Документы: Обновление ссылок на DRF Writable Nested Serializers #5711 
- Документы: Исправлена опечатка в примере URL-адресов авторизации. #5713 
- Улучшение ошибок дочерних композитных полей #5655 
- Отключить HTML-вводы для полей диктовки/списка #5702 
- Исправьте опечатку в документе HostNameVersioning doc #5709 
- Используйте rsplit для получения имени модуля и класса для импорта #5712 
- Формализовать URLPatternsTestCase #5703 
- Добавить тест перевода исключений #5700 
- Test staticfiles #5701 
- Добавить drf-yasg в документацию и схему сторонних пакетов #5720 
- Удалите неиспользуемые - compat._resolve_model()#5733
- Устранение обходного пути для неподдерживаемого Python 3.2 #5734. 
- Предпочтение - iter(dict)перед- iter(dict.keys())#5736
- Передайте аргумент - python_requiresв setuptools #5739
- Удалите неиспользуемые ссылки из документации #5735 
- Предпочитать протокол https для ссылок в документации, когда это доступно #5729 
- Добавить HStoreField, тесты полей postgres #5654 
- Всегда полностью квалифицируйте ValidationError в документации #5751. 
- Удалить недоступный код из ManualSchema #5766 
- Разрешена настройка примеров кода документации API #5752 
- Обновлена документация для использования - pip show#5757.
- Загружать „static“ вместо „staticfiles“ в шаблонах #5773 
- Исправлена опечатка в - fieldsдокументации #5783
- См. «NamespaceVersioning» вместо «NamespacedVersioning» в документации #5754. 
- ErrorDetail: добавить - __eq__/**- __ne__и- __repr__#5787
- Замените - background-attachment: fixedв документации #5777
- Сделать 404 и 403 ответы согласованными с - exceptions.APIExceptionвыводом #5763
- Небольшое исправление в документации API: схемы #5796. 
- Исправьте генерацию схемы для PrimaryKeyRelatedField #5764 
- Представить сериализатор DictField как объект в схеме #5765 
- Добавлена документация с примером повторной реализации ObtainAuthToken #5802. 
- Добавьте схему к представлению ObtainAuthToken #5676 
- Исправьте обработку данных формы запроса #5800 
- Исправление импорта представлений authtoken #5818 
- Обновление pytest, isort #5815 #5817 #5894 
- Исправлена обработка активного часового пояса для дат, отличных от ISO8601. #5833 
- Заставил TemplateHTMLRenderer отображать входы IntegerField, когда значение - 0. #5834
- Исправлена конечная точка в инструкциях по обучению #5835 
- Добавьте ролевые фильтры Django Rest Framework в пакеты третьих сторон #5809. 
- Используйте единственную копию статических активов. Обновление jQuery #5823 
- Измените тернарные условия, чтобы они соответствовали стандарту PEP308 #5827 
- Добавлены ссылки на руководства „A Todo List API with React“ и „Blog API“ #5837. 
- Исправьте опечатку в комментарии в ModelSerializer #5844 
- Добавьте администратора к установленным приложениям, чтобы избежать сбоев при тестировании. #5870 
- Исправлена схема для UUIDField в SimpleMetadata. #5872 
- Исправлена документация по включению маршрутизатора с пространствами имен. #5843 
- Тест использования объектов модели для точечного источника по умолчанию #5880 
- Разрешить обход нулевых связанных полей #5849 
- Добавлено: Учебник: Django REST с React (Django 2.0) #5891. 
- Добавьте - LimitOffsetPagination.get_count, чтобы разрешить переопределение метода #5846
- Не показывать скрытые поля в метаданных #5854 
- Разрешить OrderingFilter обрабатывать пустой кортеж (или список) для поля „ordering“. #5899 
- Добавлены обработчики типовых ошибок 500 и 400 JSON. #5904 
Серия 3.7.x¶
3.7.7¶
Дата : 21st December 2017
- Исправьте опечатку для включения файлов локали .mo в упаковку. :doc:`#5697 <https://github.com/encode/django-rest-framework/issues/5697>`* , #5695 
3.7.5¶
Дата : 21st December 2017
- Добавьте недостающие файлы шрифтов *.woff2 в упаковку. #5692 
- Добавьте недостающие файлы локали .mo в упаковку. :doc:`#5695 <https://github.com/encode/django-rest-framework/issues/5695>`* , #5696 
3.7.4¶
Дата : 20th December 2017
- Схема: Метод извлечения для обработки - manual_fields#5633- Позволяет легче настраивать обработку - manual_fields, например, для обеспечения ручных полей для каждого метода.- AutoSchemaдобавляет- get_manual_fields, как предполагаемую точку переопределения, и вспомогательный метод- update_fields, для обработки замены полей по имени из списка, который, в общем случае, вы не должны переопределять.- Примечание: - AutoSchema.__init__теперь гарантирует, что- manual_fieldsявляется списком. Ранее он мог храниться внутри списка как- None.
- Удалите шим совместимости ulrparse; вместо него используйте шесть #5579 
- Убрать обертку совместимости для - TimeDelta.total_seconds()#5577
- Очистите все пробельные символы во всем проекте #5578 
- Очистка совместимости #5581 
- Добавьте блок pygments CSS в просматриваемые представления API #5584 #5587 
- Удалить - set_rollback()из сочетания #5591
- Исправьте доступ к телу запроса/POST #5590 
- Переименуйте тест для ссылки на правильную проблему #5610 
- Исправления в документации #5611 #5612 
- Удалите ссылки на неподдерживаемые версии Django в документации и коде #5602 
- Тест исключения сериализатора для объявленных полей #5599 
- Исправлена генерация схем для бэкендов фильтров #5613 
- Небольшая очистка для тестов ModelSerializer #5598 
- Реализовать доступ к атрибуту запроса с - __getattr__#5617
- Исправлено SchemaJSRenderer отображает недопустимый Javascript #5607 
- Сделать поддержку Django 2.0 официальной/явной #5619. 
- Выполните проверку типа переданного аргумента запроса #5618 
- Исправьте скрытие AttributeError на аутентификаторах запросов #5600 
- Обновление требований к тестам #5626 
- Документы: - Serializer._declared_fieldsразрешить изменение полей на сериализаторе #5629
- Исправить упаковку #5624 
- Исправление рендеринга readme для PyPI, добавление сборки readme в CI #5625. 
- Обновить учебник #5622 
- Не обязательные поля с - allow_null=Trueне должны подразумевать значение по умолчанию #5639
- Документы: Добавить примечание о выводе сериализации - allow_null#5641
- Обновление для использования релиза Django 2.0 в tox.ini #5645 
- Исправление - Serializer.dataдля рендеринга Browsable API при предоставлении недействительных- data#5646
- Документы: Обратите внимание на ограничения AutoSchema на голом APIView #5649 
- Добавьте - .basenameи- .reverse_action()в ViewSet #5648
- Документы: Исправьте опечатки в документации по сериализаторам #5652 
- Fix - override_settingscompat #5668
- Добавьте параметр DEFAULT_SCHEMA_CLASS #5658 
- Добавить примечание к документации о том, что сгенерированное поле BooleanField может быть - required=False#5665.
- Добавить сборку „dist“ #5656 
- Исправьте опечатку в строке docstring #5678 
- Документы: Добавить - UNAUTHENTICATED_USER = Noneпримечание #5679
- Обновление примера OPTIONS из «Documenting Your API» #5680. 
- Документы: Добавьте примечание о разрешениях объектов для FBVs #5681 
- Документы: Добавить пример в - to_representationdocs #5682
- Добавить ссылку на Classy DRF в документацию #5683 
- Документ ViewSet.action #5685 
- Исправьте опечатку в документах схемы #5687 
- Исправление разбора шаблона URL при генерации схемы #5689 
- Добавьте пример использования - source=‘*’в документацию по пользовательским полям. #5688
- Исправьте поведение format_suffix_patterns с маршрутами path() в Django 2 #5691. 
3.7.3¶
Дата : 6th November 2017
- Исправьте ошибку - AppRegistryNotReadyиз импорта представления contrib.auth #5567
3.7.2¶
Дата : 6th November 2017
- Исправлена совместимость с Django 2.1 из-за удаления представлений django.contrib.auth.login()/logout(). #5510 
- Добавьте недостающий импорт для TextLexer. #5512 
- Добавление примеров и документации по кэшированию #5514 
- Включить формат даты и времени для генерации схемы #5511 
- Используйте тройные обратные знаки для блоков кода разметки #5513 
- Интерактивные документы - сделать нижние элементы боковой панели липкими #5516 
- Уточнить проверку системы пагинации #5524 
- Остановить JSONBoundField, обрабатывающий недействительный JSON #5527 
- Приведите JSONField к виду textarea в Browsable API #5530 
- Схема: Исключение OPTIONS/HEAD для действий ViewSet #5532 
- Исправьте упорядочивание для точечных источников #5533 
- Исправить: Поля с - allow_null=Trueдолжны подразумевать значение сериализации по умолчанию #5518
- Убедитесь, что заголовок Location является строго „str“, а не подклассом. #5544 
- Добавьте импорт к примеру в api-guide/parsers #5547 
- Catch OverflowError для «out of range» datetimes #5546 
- Добавьте djangorestframework-rapidjson в пакеты сторонних разработчиков #5549 
- Увеличение тестового покрытия для команды - drf_create_token#5550
- Добавьте классификатор trove для поддержки Python 3.6. #5555 
- Добавьте поддержку кэширования pip в конфигурацию Travis CI #5556 
- Переименуйте раздел [** - wheel] в [**- bdist_wheel], так как первый является наследием #5557.
- Исправьте предупреждения об обесценивании недопустимой управляющей последовательности #5560 
- Добавить шаблон ошибок интерактивных документов #5548 
- Добавьте параметр округления к DecimalField #5562 
- Исправьте все BytesWarning, пойманные во время тестов #5561. 
- Используйте литералы dict и set вместо вызовов dict() и set() #5559 
- Измените шаблон валидации ImageField, используйте валидаторы из DjangoImageField #5539 
- Исправление обработки символов юникода в query_string в Python 2 #5552 
3.7.1¶
Дата : 16th October 2017
- Исправление Интерактивная документация всегда использует false для булевых полей в запросах #5492 
- Улучшение совместимости с Django 2.0 alpha. #5500 #5503 
- Улучшена обработка коллизий именования схем #5486 
- Добавлена дополнительная документация и тесты, касающиеся предоставления значения по умолчанию для точечных полей - source#5489
3.7.0¶
Дата : 6th October 2017
- Исправьте - DjangoModelPermissionsдля обеспечения аутентификации пользователя перед вызовом метода представления- get_queryset(). В качестве побочного эффекта это изменяет порядок проверки разрешений и аутентификации HTTP-метода, и ответы 405 будут возвращаться только при аутентификации. Если вы хотите повторить старое поведение, подробности см. в PR. #5376
- Утратил силу - exclude_from_schemaна декораторе- APIViewи- api_view. Установите- schema = Noneили- @schema(None)в зависимости от ситуации. #5422
- Теперь - DateTimeFieldс учетом часового пояса при сериализации учитывается активное значение или значение по умолчанию- timezone, вместо того, чтобы всегда использовать UTC. #5435- Устранение несоответствия, при котором экземпляры сериализовались с указанным временем даты для - create, но UTC для- retrieve. #3732- Возможное нарушение обратной совместимости, если вы полагались на то, что строки времени даты будут соответствовать UTC. При необходимости, клиент должен интерпретировать время даты или set default or active timezone (docs) в UTC. 
- Удален DjangoFilterBackend в соответствии с политикой обесценивания. Вместо этого используйте - django_filters.rest_framework.FilterSetи/или- django_filters.rest_framework.DjangoFilterBackend. #5273
- Не вычеркивайте микросекунды из timeпри кодировании. Это соответствуетdatetime.
- BC Change : Ранее кодировались только миллисекунды. #5440 
 
- Не вычеркивайте микросекунды из 
- Добавлена настройка STRICT_JSON(по умолчаниюTrue) для исключения расширенных значений float (**nan,inf,-inf), принимаемых модулем Pythonjson.
- BC Change : Ранее эти значения преобразовывались в соответствующие строки. Установите - STRICT_JSONв- False, чтобы восстановить прежнее поведение. #5265
 
- Добавлена настройка 
- Добавить поддержку параметра - page_sizeв классе CursorPaginator #5250
- Сделайте DEFAULT_PAGINATION_CLASSNoneпо умолчанию.
- BC Change : Если вы просто установили - PAGE_SIZE, чтобы включить пагинацию, вам нужно добавить- DEFAULT_PAGINATION_CLASS. Предыдущее значение по умолчанию было- rest_framework.pagination.PageNumberPagination. Для этого предусмотрено предупреждение о проверке системы. Вы можете промолчать об этом, если вы устанавливаете класс пагинации на основе каждого просмотра. #5170
 
- Сделайте 
- Отлавливайте - APIExceptionот- get_serializer_fieldsпри генерации схемы. #5443
- Разрешить пользовательские классы аутентификации и разрешений при использовании - include_docs_urls#5448
- Отложите оценку переведенных строк на валидаторах. #5452 
- Добавлено значение по умолчанию для параметра „detail“ в исключение „ValidationError“ #5342 
- Скорректируйте правила схемы get_filter_fields для соответствия фреймворку #5454 
- Обновленная матрица тестов добавляет Django 2.0 и исключает Django 1.8 и 1.9
- BC Change : Это удаляет Django 1.8 и Django 1.9 из поддерживаемых версий Django REST Framework. #5457 
 
- Исправлено предупреждение об устаревании в serializers.ModelField #5058. 
- Добавлено более явное сообщение об ошибке, когда - get_querysetвозвращает- None#5348
- Исправьте документацию для ответа - dataописание #5361
- Исправить pycache /.pyc исключения при упаковке #5373. 
- Исправьте обработку значений по умолчанию для точечных источников #5375 
- Убедитесь, что content_type установлен при передаче пустого тела в RequestFactory #5351 
- Исправить документацию ErrorDetail #5380 
- Разрешить необязательное содержание в форме общего содержания #5372 
- Обновлены поддерживаемые значения для поля NullBooleanField #5387. 
- Исправление пользовательских именованных полей ModelSerializer с источником на модели #5388 
- Исправлен пример документации MultipleFieldLookupMixin для правильной проверки разрешения на уровне объекта #5398. 
- Обновление примера get_object() в permissions.md #5401 
- Исправьте команду управления authtoken #5415 
- Исправить генерацию схемы разметки #5421 
- Разрешить динамически устанавливать - ChoiceField.choices#5426
- Добавьте макет проекта в быстрый старт #5434 
- Повторное использование функции „apply_markdown“ в шаблоне „render_markdown“ #5469 
- Добавлены ссылки на пакет - drf-openapiв документации #5470
- Добавлена подсветка кода docstrings с помощью pygments #5462. 
- Исправлено отображение документации для представлений с именами - data#5472
- Документы: Уточнено поведение валидации „to_internal_value()“ #5466 
- Исправьте недостающий вызов six.text_type() в APIException.** str #5476 
- Документ documentation.py #5478 
- Исправление коллизий именования в генерации схем #5464 
- Вызовите функцию Django authenticate с объектом запроса #5295. 
- Обновление coreapi JS до версии 0.1.1 #5479 
- Have - is_list_viewраспознать RetrieveModel… views #5480
- Удалите код совместимости с Django 1.8 и 1.9 #5481 
- Удалите устаревший код схемы из DefaultRouter #5482 
- Переработайте генерацию схем, чтобы обеспечить возможность настройки для каждого вида.
- BC Change : - SchemaGenerator.get_serializer_fieldsбыл рефакторингован как- AutoSchema.get_serializer_fieldsи исключен аргумент- view[#5354][gh5354]
 
Серия 3.6.x¶
3.6.4¶
Дата : 21st August 2017
- Игнорировать любые неверно сформированные параметры запроса для OrderingFilter. #5131 
- Улучшение объема памяти при чтении больших запросов JSON. #5147 
- Исправьте генерацию схемы для пагинации. #5161 
- Исправьте исключение, когда - HTML_CUTOFFустанавливается в- None. #5174
- Исправление API browsable, не поддерживающего корректно - multipart/form-data. #5176
- Исправлено - test_hyperlinked_related_lookup_url_encoded_exists. #5179
- Убедитесь, что max_length находится в kwargs FileField. #5186 
- Исправьте - list_route&- detail_routeс kwargs содержит фигурную скобку в- url_path#5187
- Добавьте команду Django manage для создания пользователя DRF Token. #5188 
- Убедитесь, что шаблоны документации API не проверяют аутентификацию пользователя #5162 
- Исправьте особый случай, когда поле OneToOneField также является первичным ключом. #5192 
- Добавлена aria-label и новый регион для целей доступности в base.html #5196 
- Цитирование вложенных параметров API в api.js. #5214 
- Установите ViewSet args/kwargs/request перед отправкой. #5229 
- Добавлена поддержка юникода в SlugField. #5231 
- Исправьте появление HiddenField в начальном содержимом формы Raw Data. #5259 
- Вызывать ошибку валидации при неверном разборе часового пояса. #5261 
- Исправьте поведение/производительность SearchFilter to-many. #5264 
- Упрощенные цепные сравнения и незначительные исправления кода. #5276 
- RemoteUserAuthentication, документация и тесты. #5306 
- Вернуть «Кэширование корня поля и свойства контекста» #5313. 
- Исправьте интроспекцию поля списка в схеме. #5326 
- Исправление интерактивной документации для нескольких вложенных и дополнительных методов. #5334 
- Исправление/удаление неопределенного шаблона var «schema» #5346 
3.6.3¶
Дата : 12th May 2017
- Вызывает 404, если поиск URL приводит к ValidationError. (** :doc:`#5126 <https://github.com/encode/django-rest-framework/issues/5126>`** ) 
- Учет имен http_method_names в представлениях, основанных на классах, при генерации схем API. (** :doc:`#5085 <https://github.com/encode/django-rest-framework/issues/5085>`** ) 
- Разрешить переопределение - get_limitв LimitOffsetPagination для возврата всех записей. (** :doc:`#4437 <https://github.com/encode/django-rest-framework/issues/4437>`** )
- Исправьте частичное обновление для ListSerializer. (** :doc:`#4222 <https://github.com/encode/django-rest-framework/issues/4222>`** ) 
- Правильное отображение элемента управления JSONField в просматриваемом API. (** :doc:`#4999 <https://github.com/encode/django-rest-framework/issues/4999>`** , :doc:`#5042 <https://github.com/encode/django-rest-framework/issues/5042>`** ) 
- Вызывает ошибки валидации для недопустимого времени суток в заданном часовом поясе. (** :doc:`#4987 <https://github.com/encode/django-rest-framework/issues/4987>`** ) 
- Поддержка ограничения ярлыков документов и схем на подмножество ссылок. (** :doc:`#4979 <https://github.com/encode/django-rest-framework/issues/4979>`** ) 
- Решить ошибку SchemaGenerator с пагинаторами, у которых нет атрибута - page_size. (** :doc:`#5086 <https://github.com/encode/django-rest-framework/issues/5086>`** , :doc:`#3692 <https://github.com/encode/django-rest-framework/issues/3692>`** )
- Разрешите исключение HyperlinkedRelatedField для строки с %20 вместо пробела. (** :doc:`#4748 <https://github.com/encode/django-rest-framework/issues/4748>`** , :doc:`#5078 <https://github.com/encode/django-rest-framework/issues/5078>`** ) 
- Настраиваемые классы генератора схем. (** :doc:`#5082 <https://github.com/encode/django-rest-framework/issues/5082>`** ) 
- Обновляйте существующие заголовки vary в ответе вместо того, чтобы перезаписывать их. (** :doc:`#5047 <https://github.com/encode/django-rest-framework/issues/5047>`** ) 
- Поддержка передачи - .as_view()в экземпляр представления. (** :doc:`#5053 <https://github.com/encode/django-rest-framework/issues/5053>`** )
- Используйте правильный обработчик исключений при переопределении настроек в представлении. (** :doc:`#5055 <https://github.com/encode/django-rest-framework/issues/5055>`** , :doc:`#5054 <https://github.com/encode/django-rest-framework/issues/5054>`** ) 
- Обновите булево поле для поддержки значений «да» и «нет». (** :doc:`#5038 <https://github.com/encode/django-rest-framework/issues/5038>`** ) 
- Исправьте уникальный валидатор для ChoiceField. (** :doc:`#5004 <https://github.com/encode/django-rest-framework/issues/5004>`** , :doc:`#5026 <https://github.com/encode/django-rest-framework/issues/5026>`** , :doc:`#5028 <https://github.com/encode/django-rest-framework/issues/5028>`** ) 
- Очистка JavaScript в API Docs. (** :doc:`#5001 <https://github.com/encode/django-rest-framework/issues/5001>`** ) 
- Включите регексы путей URL в схемы API, если они действительны. (** :doc:`#5014 <https://github.com/encode/django-rest-framework/issues/5014>`** ) 
- Правильно заданная схема в coreapi TokenAuthentication. (** :doc:`#5000 <https://github.com/encode/django-rest-framework/issues/5000>`** , :doc:`#4994 <https://github.com/encode/django-rest-framework/issues/4994>`** ) 
- HEAD запросы на ViewSets не должны возвращать 405. (** :doc:`#4705 <https://github.com/encode/django-rest-framework/issues/4705>`** , :doc:`#4973 <https://github.com/encode/django-rest-framework/issues/4973>`** , :doc:`#4864 <https://github.com/encode/django-rest-framework/issues/4864>`** ) 
- Поддержка использования „source“ в - extra_kwargs. (** :doc:`#4688 <https://github.com/encode/django-rest-framework/issues/4688>`** )
- Исправьте неверный тип содержимого для schema.js (** :doc:`#4968 <https://github.com/encode/django-rest-framework/issues/4968>`** ) 
- Исправьте проблемы наследования DjangoFilterBackend. (** :doc:`#5089 <https://github.com/encode/django-rest-framework/issues/5089>`** , :doc:`#5117 <https://github.com/encode/django-rest-framework/issues/5117>`** ) 
3.6.2¶
Дата : 10th March 2017
- Поддержка Safari и IE в документации API. (** :doc:`#4959 <https://github.com/encode/django-rest-framework/issues/4959>`** , :doc:`#4961 <https://github.com/encode/django-rest-framework/issues/4961>`** ) 
- Добавьте недостающие - mark_safeв тегах шаблона API docs. (** :doc:`#4952 <https://github.com/encode/django-rest-framework/issues/4952>`** , :doc:`#4953 <https://github.com/encode/django-rest-framework/issues/4953>`** )
- Добавьте недостающие глифические шрифты. (** :doc:`#4950 <https://github.com/encode/django-rest-framework/issues/4950>`** , :doc:`#4951 <https://github.com/encode/django-rest-framework/issues/4951>`** ) 
- Исправьте поля «один к одному» в документации API. (** :doc:`#4955 <https://github.com/encode/django-rest-framework/issues/4955>`** , :doc:`#4956 <https://github.com/encode/django-rest-framework/issues/4956>`** ) 
- Чистка тестов. (** :doc:`#4949 <https://github.com/encode/django-rest-framework/issues/4949>`** ) 
3.6.1¶
Дата : 9th March 2017
- Убедитесь, что зависимость - markdownявляется необязательной. (** :doc:`#4947 <https://github.com/encode/django-rest-framework/issues/4947>`** )
Серия 3.5.x¶
3.5.4¶
Дата : 10th February 2017
- Добавьте аргументы max_length и min_length для ListField. (** :doc:`#4877 <https://github.com/encode/django-rest-framework/issues/4877>`** ) 
- Добавьте поддержку пользовательских обработчиков исключений для каждого вида. (** :doc:`#4753 <https://github.com/encode/django-rest-framework/issues/4753>`** ) 
- Поддержка отключения объявленных полей в подклассах сериализатора. (** :doc:`#4764 <https://github.com/encode/django-rest-framework/issues/4764>`** ) 
- Поддержка пользовательских имен представлений на конечных точках - @list_routeи- @detail_route. (** :doc:`#4821 <https://github.com/encode/django-rest-framework/issues/4821>`** )
- Корректные метки для полей в шаблоне входа в систему при использовании пользовательской модели пользователя. (** :doc:`#4841 <https://github.com/encode/django-rest-framework/issues/4841>`** ) 
- Исправление пробелов в описаниях, сгенерированных из документальных строк. (** :doc:`#4759 <https://github.com/encode/django-rest-framework/issues/4759>`** , :doc:`#4869 <https://github.com/encode/django-rest-framework/issues/4869>`** , :doc:`#4870 <https://github.com/encode/django-rest-framework/issues/4870>`** ) 
- Улучшен отчет об ошибках, когда схемы возвращаются представлениями без визуализатора схем. (** :doc:`#4790 <https://github.com/encode/django-rest-framework/issues/4790>`** ) 
- Исправление возврата ответа на запросы - PUTпри использовании- prefetch_related. (** :doc:`#4661 <https://github.com/encode/django-rest-framework/issues/4661>`** , :doc:`#4668 <https://github.com/encode/django-rest-framework/issues/4668>`** )
- Исправление названий видов хлебных крошек. (** :doc:`#4750 <https://github.com/encode/django-rest-framework/issues/4750>`** ) 
- Исправление для RequestsClient, обеспечивающее полное соответствие URL. (** :doc:`#4678 <https://github.com/encode/django-rest-framework/issues/4678>`** ) 
- Исправление некорректного поведения проверки записываемых-вложенных полей в некоторых случаях. (** :doc:`#4634 <https://github.com/encode/django-rest-framework/issues/4634>`** , :doc:`#4669 <https://github.com/encode/django-rest-framework/issues/4669>`** ) 
- Устранение предупреждений об износе Django. (** :doc:`#4712 <https://github.com/encode/django-rest-framework/issues/4712>`** ) 
- Различная очистка тестовых примеров. 
3.5.3¶
Дата : 7th November 2016
- Не выдавать некорректные предупреждения об устаревании FilterSet. (** :doc:`#4660 <https://github.com/encode/django-rest-framework/issues/4660>`** , :doc:`#4643 <https://github.com/encode/django-rest-framework/issues/4643>`** , :doc:`#4644 <https://github.com/encode/django-rest-framework/issues/4644>`** ) 
- Генерация схемы не должна вызывать 404, когда это делает класс разрешения представления. (** :doc:`#4645 <https://github.com/encode/django-rest-framework/issues/4645>`** , :doc:`#4646 <https://github.com/encode/django-rest-framework/issues/4646>`** ) 
- Добавьте поддержку - autofocusдля элементов управления вводом. (** :doc:`#4650 <https://github.com/encode/django-rest-framework/issues/4650>`** )
3.5.2¶
Дата : 1st November 2016
- Восстановление трассировки исключений в Python 2.7. (** :doc:`#4631 <https://github.com/encode/django-rest-framework/issues/4631>`** , :doc:`#4638 <https://github.com/encode/django-rest-framework/issues/4638>`** ) 
- Правильное отображение матриц в консоли администратора. (** :doc:`#4532 <https://github.com/encode/django-rest-framework/issues/4532>`** , :doc:`#4636 <https://github.com/encode/django-rest-framework/issues/4636>`** ) 
- Исправьте is_simple_callable с переменными args, kwargs. (** :doc:`#4622 <https://github.com/encode/django-rest-framework/issues/4622>`** , :doc:`#4602 <https://github.com/encode/django-rest-framework/issues/4602>`** ) 
- Поддержка литералов „on“/“off“ с BooleanField. (** :doc:`#4640 <https://github.com/encode/django-rest-framework/issues/4640>`** , :doc:`#4624 <https://github.com/encode/django-rest-framework/issues/4624>`** ) 
- Включить пагинацию курсора в кверисетах значений. (** :doc:`#4569 <https://github.com/encode/django-rest-framework/issues/4569>`** ) 
- Исправлена поддержка функции get_full_details() для исключений Throttled. (** :doc:`#4627 <https://github.com/encode/django-rest-framework/issues/4627>`** ) 
- Исправьте прокси FilterSet. (** :doc:`#4620 <https://github.com/encode/django-rest-framework/issues/4620>`** ) 
- Сделайте импорт полей сериализатора явным. (** :doc:`#4628 <https://github.com/encode/django-rest-framework/issues/4628>`** ) 
- Отбросьте избыточные запросы адаптера. (** :doc:`#4639 <https://github.com/encode/django-rest-framework/issues/4639>`** ) 
3.5.1¶
Дата : 21st October 2016
- Сделайте - rest_framework/compat.pyимпорт. (** :doc:`#4612 <https://github.com/encode/django-rest-framework/issues/4612>`** , :doc:`#4608 <https://github.com/encode/django-rest-framework/issues/4608>`** , :doc:`#4601 <https://github.com/encode/django-rest-framework/issues/4601>`** )
- Исправьте ошибку в генерации пути к базе схемы. (** :doc:`#4611 <https://github.com/encode/django-rest-framework/issues/4611>`** , :doc:`#4605 <https://github.com/encode/django-rest-framework/issues/4605>`** ) 
- Исправьте неработающий случай ListSerializer с одним элементом. (** :doc:`#4609 <https://github.com/encode/django-rest-framework/issues/4609>`** , :doc:`#4606 <https://github.com/encode/django-rest-framework/issues/4606>`** ) 
- Уберите голый - raiseдля совместимости с Python 3.5. (** :doc:`#4600 <https://github.com/encode/django-rest-framework/issues/4600>`** )
3.5.0¶
Дата : 20th October 2016
Серия 3.4.x¶
3.4.7¶
Дата : 21st September 2016
- Обратное поведение для разбора запроса, когда request.POST уже доступен. (** :doc:`#3951 <https://github.com/encode/django-rest-framework/issues/3951>`** , :doc:`#4500 <https://github.com/encode/django-rest-framework/issues/4500>`** ) 
- Исправьте регрессию - RegexField. (** :doc:`#4489 <https://github.com/encode/django-rest-framework/issues/4489>`** , :doc:`#4490 <https://github.com/encode/django-rest-framework/issues/4490>`** , :doc:`#2617 <https://github.com/encode/django-rest-framework/issues/2617>`** )
- Отсутствие запятой в - admin.htmlвызывает ошибку CSRF. (** :doc:`#4472 <https://github.com/encode/django-rest-framework/issues/4472>`** , :doc:`#4473 <https://github.com/encode/django-rest-framework/issues/4473>`** )
- Исправьте отрисовку ответа с пустым контекстом. (** :doc:`#4495 <https://github.com/encode/django-rest-framework/issues/4495>`** ) 
- Исправьте регрессию отступов в листинге API. (** :doc:`#4493 <https://github.com/encode/django-rest-framework/issues/4493>`** ) 
- Исправлена проблема, когда неверное значение устанавливалось в - ResolverMatch.func_nameдекорированного представления api_view. (** :doc:`#4465 <https://github.com/encode/django-rest-framework/issues/4465>`** , :doc:`#4462 <https://github.com/encode/django-rest-framework/issues/4462>`** )
- Исправьте - APIClient.get(), когда путь содержит юникодовые аргументы (** :doc:`#4458 <https://github.com/encode/django-rest-framework/issues/4458>`** )
3.4.6¶
Дата : 23rd August 2016
- Исправьте неправильный Javascript в API для просмотра. (** :doc:`#4435 <https://github.com/encode/django-rest-framework/issues/4435>`** ) 
- Пропустите HiddenField из полей схемы. (** :doc:`#4425 <https://github.com/encode/django-rest-framework/issues/4425>`** , :doc:`#4429 <https://github.com/encode/django-rest-framework/issues/4429>`** ) 
- Улучшите Create, чтобы показать исходный трассировочный откат исключения. (** :doc:`#3508 <https://github.com/encode/django-rest-framework/issues/3508>`** ) 
- Исправьте - AdminRendererотображение полей, связанных только с PK. (** :doc:`#4419 <https://github.com/encode/django-rest-framework/issues/4419>`** , :doc:`#4423 <https://github.com/encode/django-rest-framework/issues/4423>`** )
3.4.5¶
Дата : 19th August 2016
- Улучшите обработку ошибок отладки. ([#4416][gh4416], [#4409][gh4409]) 
- Разрешить пользовательскую настройку CSRF_HEADER_NAME. ([#4415][gh4415], [#4410][gh4410]) 
- Включите атрибут .action для наборов представлений при генерации схем. ([#4408][gh4408], [#4398][gh4398]) 
- Не включайте элементы request.FILES в request.POST. ([#4407][gh4407]) 
- Исправьте отрисовку множественных чекбоксов. ([#4403][gh4403]) 
- Исправьте docstring для Field.get_default. ([#4404][gh4404]) 
- Замените символ utf8 на его аналог ascii в README. ([#4412][gh4412]) 
3.4.4¶
Дата : 12th August 2016
- Убедитесь, что представления полностью инициализированы при генерации схем. (** :doc:`#4373 <https://github.com/encode/django-rest-framework/issues/4373>`** , :doc:`#4382 <https://github.com/encode/django-rest-framework/issues/4382>`** , :doc:`#4383 <https://github.com/encode/django-rest-framework/issues/4383>`** , :doc:`#4279 <https://github.com/encode/django-rest-framework/issues/4279>`** , :doc:`#4278 <https://github.com/encode/django-rest-framework/issues/4278>`** ) 
- Добавьте описания полей формы в схемы. (** :doc:`#4387 <https://github.com/encode/django-rest-framework/issues/4387>`** ) 
- Исправьте генерацию категорий для конечных точек схемы. (** :doc:`#4391 <https://github.com/encode/django-rest-framework/issues/4391>`** , :doc:`#4394 <https://github.com/encode/django-rest-framework/issues/4394>`** , :doc:`#4390 <https://github.com/encode/django-rest-framework/issues/4390>`** , :doc:`#4386 <https://github.com/encode/django-rest-framework/issues/4386>`** , :doc:`#4376 <https://github.com/encode/django-rest-framework/issues/4376>`** , :doc:`#4329 <https://github.com/encode/django-rest-framework/issues/4329>`** ) 
- Не удалять пустые параметры запроса при пагинации. (** :doc:`#4392 <https://github.com/encode/django-rest-framework/issues/4392>`** , :doc:`#4393 <https://github.com/encode/django-rest-framework/issues/4393>`** , :doc:`#4260 <https://github.com/encode/django-rest-framework/issues/4260>`** ) 
- Не выполняйте повторно запрос для пустых результатов с LimitOffsetPagination. (** :doc:`#4201 <https://github.com/encode/django-rest-framework/issues/4201>`** , :doc:`#4388 <https://github.com/encode/django-rest-framework/issues/4388>`** ) 
- Более строгая проверка типов для поля CharField. (** :doc:`#4380 <https://github.com/encode/django-rest-framework/issues/4380>`** , :doc:`#3394 <https://github.com/encode/django-rest-framework/issues/3394>`** ) 
- RelatedField.choices должен сохранять нестроковые значения. (** :doc:`#4111 <https://github.com/encode/django-rest-framework/issues/4111>`** , :doc:`#4379 <https://github.com/encode/django-rest-framework/issues/4379>`** , :doc:`#3365 <https://github.com/encode/django-rest-framework/issues/3365>`** ) 
- Тестовый пример для отображения флажков в вертикальном стиле формы. (** :doc:`#4378 <https://github.com/encode/django-rest-framework/issues/4378>`** , :doc:`#3868 <https://github.com/encode/django-rest-framework/issues/3868>`** , :doc:`#3868 <https://github.com/encode/django-rest-framework/issues/3868>`** ) 
- Показать отслеживание ошибок HTML в просматриваемом API (** :doc:`#4042 <https://github.com/encode/django-rest-framework/issues/4042>`** , :doc:`#4172 <https://github.com/encode/django-rest-framework/issues/4172>`** ) 
- Исправьте обработку ALLOWED_VERSIONS и отсутствие DEFAULT_VERSION. #4370 
- Разрешить - max_digits=Noneна DecimalField. (** :doc:`#4377 <https://github.com/encode/django-rest-framework/issues/4377>`** , :doc:`#4372 <https://github.com/encode/django-rest-framework/issues/4372>`** )
- Ограничьте набор запросов при отображении реляционного выбора. (** :doc:`#4375 <https://github.com/encode/django-rest-framework/issues/4375>`** , :doc:`#4122 <https://github.com/encode/django-rest-framework/issues/4122>`** , :doc:`#3329 <https://github.com/encode/django-rest-framework/issues/3329>`** , :doc:`#3330 <https://github.com/encode/django-rest-framework/issues/3330>`** , :doc:`#3877 <https://github.com/encode/django-rest-framework/issues/3877>`** ) 
- Решить отображение формы с ChoiceField, MultipleChoiceField и нестроковыми вариантами выбора. (** :doc:`#4374 <https://github.com/encode/django-rest-framework/issues/4374>`** , :doc:`#4119 <https://github.com/encode/django-rest-framework/issues/4119>`** , :doc:`#4121 <https://github.com/encode/django-rest-framework/issues/4121>`** , :doc:`#4137 <https://github.com/encode/django-rest-framework/issues/4137>`** , :doc:`#4120 <https://github.com/encode/django-rest-framework/issues/4120>`** ) 
- Исправьте вызов метода обратного восстановления TemplateHTMLRenderer.resolve_context(). (** :doc:`#4371 <https://github.com/encode/django-rest-framework/issues/4371>`** ) 
3.4.3¶
Дата : 5th August 2016
- Включите fallback для пользователей старого внутреннего API TemplateHTMLRenderer. ([#4361][gh4361]) 
3.4.2¶
Дата : 5th August 2016
- Включите kwargs, переданные в „as_view“ при генерации схем. ([#4359][gh4359], [#4330][gh4330], [#4331][gh4331]) 
- Доступ к - request.user.is_authenticatedкак к свойству, а не методу, под Django 1.10+ ([#4358][gh4358], [#4354][gh4354])
- Отфильтруйте HEAD из схем. ([#4357][gh4357]) 
- extra_kwargs имеет приоритет над kwargs уникальности. ([#4198][gh4198], [#4199][gh4199], [#4349][gh4349]) 
- Исправление описаний при использовании табуляции в отступах кода. ([#4345][gh4345], [#4347][gh4347])* 
- Изменение генерации контекста шаблона в TemplateHTMLRenderer. ([#4236][gh4236]) 
- Параметры сериализатора по умолчанию не должны включаться в частичные обновления. ([#4346][gh4346], [#3565][gh3565]) 
- Последовательное поведение и описательная ошибка FileUploadParser, когда имя файла не включено. ([#4340][gh4340], [#3610][gh3610], [#4292][gh4292], [#4296][gh4296]) 
- DecimalField квантует входящие цифры. ([#4339][gh4339], [#4318][gh4318]) 
- Обработка нестрокового ввода для полей IP. ([#4335][gh4335], [#4336][gh4336], [#4338][gh4338]) 
- Исправьте обработку ведущей косой черты, когда генерация схемы включает корневой URL. ([#4332][gh4332]) 
- Тестовые примеры для DictField с опциями allow_null. ([#4348][gh4348]) 
- Обновление тестов с Django 1.10 beta до Django 1.10. ([#4344][gh4344]) 
3.4.1¶
Дата : 28th July 2016
- Добавлен аргумент - root_renderersк- DefaultRouter. ([#4323][gh4323], [#4268][gh4268])
- Добавлены аргументы - urlи- schema_url. ([#4321][gh4321], [#4308][gh4308], [#4305][gh4305])
- Проверка уникальности вместе должна применяться к полям, доступным только для чтения и имеющим значение по умолчанию. ([#4316][gh4316], [#4294][gh4294]) 
- Установите view.format_kwarg в генераторе схем. ([#4293][gh4293], [#4315][gh4315]) 
- Исправьте генератор схем для представлений с - pagination_class = None. ([#4314][gh4314], [#4289][gh4289])
- Исправьте генератор схем для представлений без - get_serializer_class. ([#4265][gh4265], [#4285][gh4285])
- Исправления для параметров медиатипа в заголовках - Acceptи- Content-Type. ([#4287][gh4287], [#4313][gh4313], [#4281][gh4281])
- Используйте verbose_name вместо object_name в сообщениях об ошибках. ([#4299][gh4299]) 
- Незначительное обновление версии Twitter Bootstrap. ([#4307][gh4307]) 
- SearchFilter выдает ошибку при использовании со связанным полем. ([#4302][gh4302], [#4303][gh4303], [#4298][gh4298]) 
- Добавление поддержки кодов состояния RFC 4918. ([#4291][gh4291]) 
- Добавьте LICENSE.md в собранное колесо. ([#4270][gh4270]) 
- Сериализация «сложного» поля возвращает None вместо значения с версии 3.4 ([#4272][gh4272], [#4273][gh4273], [#4288][gh4288]) 
3.4.0¶
Дата : 14th July 2016
- Не обрезайте микросекунды в выводе JSON. ([#4256][gh4256]) 
- Две немного разные сериализации времени даты по стандарту iso 8601. ([#4255][gh4255]) 
- Устранение некорректного включения параметров типа носителя. ([#4254][gh4254]) 
- Ответ Content-Type потенциально неверно сформирован. ([#4253][gh4253]) 
- Исправьте ошибку setup.py на некоторых платформах. ([#4246][gh4246]) 
- Перенесите альтернативные форматы в coreapi в отдельные пакеты. ([#4244][gh4244]) 
- Добавьте аргумент с ключевым словом localize в - DecimalField. ([#4233][gh4233])
- Исправление проблем с маршрутизаторами для пользовательских list-route и detail-routes. ([#4229][gh4229]) 
- Версионность пространства имен с вложенными пространствами имен. ([#4219][gh4219]) 
- Надежная проверка на уникальность. ([#4217][gh4217]) 
- Небольшой рефакторинг - must_call_distinct. ([#4215][gh4215])
- Переопределяемое отсечение смещения в CursorPagination. ([#4212][gh4212]) 
- Передавайте строки в виде строки с полями даты/времени. ([#4196][gh4196]) 
- Добавьте тест, подтверждающий, что required=False является действительным для реляционного поля. ([#4195][gh4195]) 
- В LimitOffsetPagination - limit=0следует вернуться к пределу по умолчанию. ([#4194][gh4194])
- Исключите поля read_only=True из валидации unique_together и добавьте документацию. ([#4192][gh4192]) 
- Работа с байтовыми строками в JSON. ([#4191][gh4191]) 
- JSONField(binary=True) представляет использование двоичных строк, которые JSONRenderer не поддерживает. ([#4187][gh4187]) 
- JSONField(binary=True) представляет использование двоичных строк, которые JSONRenderer не поддерживает. ([#4185][gh4185]) 
- Более надежный рендеринг форм в API для просмотра. ([#4181][gh4181]) 
- Пустые случаи - .validated_dataи- .errorsкак списки, а не dicts для ListSerializer. ([#4180][gh4180])
- Схемы и клиентские библиотеки. ([#4179][gh4179]) 
- Удалено свойство - AUTH_USER_MODELcompat. ([#4176][gh4176])
- Уберите существующие предупреждения об износе. ([#4166][gh4166]) 
- Поддержка Django 1.10. ([#4158][gh4158]) 
- Обновлена версия jQuery до 1.12.4. ([#4157][gh4157]) 
- Более надежное поведение по умолчанию для OrderingFilter. ([#4156][gh4156]) 
- удаление кодов и тестов description.py. ([#4153][gh4153]) 
- Заверните guardian.VERSION в кортеж. ([#4149][gh4149]) 
- Уточните валидатор для полей с <source=> kwargs. ([#4146][gh4146]) 
- Исправьте представление значений None в дочерних элементах ListField, DictField. ([#4118][gh4118]) 
- Решите представление TimeField для значения midnight. ([#4107][gh4107]) 
- Установите правильный код статуса в AdminRenderer для перенаправления после POST/DELETE запросов. ([#4106][gh4106]) 
- Рендеринг TimeField возвращает None вместо 00:00:00. ([#4105][gh4105]) 
- Исправьте неверно названный путь к локали zh-hans и zh-hant. ([#4103][gh4103]) 
- Предотвращение возникновения исключения, когда предел равен 0. ([#4098][gh4098]) 
- TokenAuthentication: Разрешить пользовательское ключевое слово в заголовке. ([#4097][gh4097]) 
- Обработка некорректно заполненного заголовка HTTP basic auth. ([#4090][gh4090]) 
- При пагинации LimitOffset происходит сбой Browseable API, когда limit=0. ([#4079][gh4079]) 
- Исправлена поддержка произвольной точности DecimalField. ([#4075][gh4075]) 
- Добавлена поддержка пользовательских имен CSRF-куки. ([#4049][gh4049]) 
- Исправьте регрессию, вызванную #4035. ([#4041][gh4041]) 
- Ни одно представление auth, не имеющее разрешения, не должно поднимать 403. ([#4040][gh4040]) 
- Исправьте путаницу между string_types и text_types. ([#4025][gh4025]) 
- Не перечислять варианты связанных полей в запросах OPTIONS. ([#4021][gh4021]) 
- Исправьте опечатку. ([#4008][gh4008]) 
- Переназначьте инициализацию представления. ([#4006][gh4006]) 
- Ошибка типа в DjangoObjectPermissionsFilter на Python 3.4. ([#4005][gh4005]) 
- Исправлено использование устаревшего Query.aggregates. ([#4003][gh4003]) 
- Исправьте пустые строки в документах. ([#4002][gh4002]) 
- Исправлена пагинация администратора, когда лимит равен 0. ([#3990][gh3990]) 
- Корректировка OrderingFilter. ([#3983][gh3983]) 
- Необязательные поля, связанные с сериализатором. ([#3976][gh3976]) 
- Использование более безопасного способа вызова «@api_view» в учебнике. ([#3971][gh3971]) 
- ListSerializer не обрабатывает ограничения unique_together. ([#3970][gh3970]) 
- Добавьте недостающий файл миграции. ([#3968][gh3968]) 
- OrderingFilterдолжен вызывать- get_serializer_class()для определения полей по умолчанию. ([#3964][gh3964])
- Удалите старые проверки Django из тестов и compat. ([#3953][gh3953]) 
- Поддержите callable как значение - initialдля любого- serializer.Field. ([#3943][gh3943])
- Предотвращен ненужный вызов distinct() в SearchFilter. ([#3938][gh3938]) 
- Исправьте сериализацию None UUID ForeignKey. ([#3936][gh3936]) 
- Увольнение Django 1.7. ([#3933][gh3933]) 
- Добавьте недостающий пробел в сообщении об ошибке сериализатора. ([#3926][gh3926]) 
- Исправлена опечатка в _force_text_recursive. ([#3908][gh3908]) 
- Попытка устранить предупреждения Django 2.0 deprecate, связанные с - field.rel. ([#3906][gh3906])
- Исправьте разбор многокомпонентных данных с помощью вложенного сериализатора со списком. ([#3820][gh3820]) 
- Разрешение URL API в разных пространствах имен. ([#3816][gh3816]) 
- Не используйте HTML-эскейп - help_textв формах Browsable API. ([#3812][gh3812])
- OPTIONS находит и показывает все возможные внешние ключи в поле choices. ([#3751][gh3751]) 
- Предупреждения об износе Django 1.9 ([#3729][gh3729]) 
- Тестовый пример для #3598 ([#3710][gh3710]) 
- Добавление поддержки нескольких значений для фильтра поиска. ([#3541][gh3541]) 
- Используйте get_serializer_class в фильтре упорядочивания. ([#3487][gh3487]) 
- Сериализаторы с many=True должны возвращать пустой список, а не пустой dict. ([#3476][gh3476]) 
- LimitOffsetPagination limit=0 исправление. ([#3444][gh3444]) 
- Разрешите валидаторам откладывать оценку строк и обрабатывать новый формат строк. ([#3438][gh3438]) 
- Уникальный валидатор выполняется и ломается, если поле недействительно. ([#3381][gh3381]) 
- Не игнорируйте переопределенный View.get_view_name() в хлебных крошках. ([#3273][gh3273]) 
- Повторная отрисовка формы при неудачном рендеринге с помощью сериализатора. ([#3164][gh3164]) 
- Ограничение уникальности не позволяет обновлять вложенные сериализаторы. ([#2996][gh2996]) 
- Валидаторы уникальности не должны запускаться для исключенных (read_only) полей. ([#2848][gh2848]) 
- UniqueValidator вызывает исключение для вложенных объектов. ([#2403][gh2403]) 
- lookup_typeустарело в пользу- lookup_expr. ([#4259][gh4259])
Серия 3.3.x¶
3.3.3¶
Дата : 14th March 2016.
- Удалите строку версии из шаблонов. Спасибо @blag за отчет и исправления. ([#3878][gh3878], [#3913][gh3913], [#3912][gh3912]) 
- Исправлена вертикальная html-верстка для - BooleanField. Спасибо Михаилу Радчуку за исправление. ([#3910][gh3910])
- Уменьшены предупреждения об износе в Django 1.8. Спасибо Саймону Шаретту за исправление. ([#3903][gh3903]) 
- Интернационализация для authtoken. Спасибо Михаилу Начарову за исправление. ([#3887][gh3887], [#3968][gh3968]) 
- Исправьте модель - Tokenкак- abstract, когда приложение authtoken не объявлено. Спасибо Адаму Томасу за сообщение. ([#3860][gh3860], [#3858][gh3858])
- Улучшение совместимости версий Markdown. Спасибо Майклу Шульцу (Michael J. Schultz) за исправление. ([#3604][gh3604], [#3842][gh3842]) 
- QueryParameterVersioningне использует настройку- DEFAULT_VERSION. Спасибо Брэду Монтгомери за исправление. ([#3833][gh3833])
- Добавьте явное - on_deleteна моделях. Спасибо Мадсу Йенсену за исправление. ([#3832][gh3832])
- Исправьте - DateField.to_representationдля работы с юникодом Python 2. Спасибо Михаилу Радчуку за исправление. ([#3819][gh3819])
- Исправлено - TimeField, не обрабатывающее времена строк. Спасибо Арески Белаиду за исправление. ([#3809][gh3809])
- Избегайте обновлений - Meta.extra_kwargs. Спасибо Кевину Мэсси за сообщение и исправление. ([#3805][gh3805], [#3804][gh3804])
- Исправление некорректного отображения вложенной ошибки валидации. Спасибо Крейгу де Стигтеру за исправление. ([#3801][gh3801]) 
- Документ о том, как избежать проблем с CSRF и отсутствующей кнопкой - django-crispy-forms. Спасибо Emmanuelle Delescolle, José Padilla и Luis San Pablo за отчет, анализ и исправление. ([#3787][gh3787], [#3636][gh3636], [#3637][gh3637])
- Улучшение времени установки файла Rest Framework Settings. Спасибо Miles Hutson за отчет и Mads Jensen за исправление. ([#3786][gh3786], [#3815][gh3815]) 
- Улучшение совместимости authtoken с Django 1.9. Спасибо S. Andrew Sheppard за исправление. ([#3785][gh3785]) 
- Исправьте передачу - Min/MaxValueValidatorиз- DecimalFieldмодели. Спасибо Кевину Брауну за исправление. ([#3774][gh3774])
- Улучшение HTML-заголовка в Browsable API. Спасибо Майку Лисснеру за отчет и исправление. ([#3769][gh3769]) 
- Исправьте - AutoFilterSetдля наследования от- default_filter_set. Спасибо Тому Линфорду за исправление. ([#3753][gh3753])
- Исправьте конфигурацию transifex для работы с новыми кодами китайского языка. Спасибо @nypisces за отчет и исправление. ([#3739][gh3739]) 
- DateTimeFieldнекорректно обрабатывает пустые значения. Спасибо Мику Паркеру за сообщение и исправление. ([#3731][gh3731], [#3726][gh3728])
- Возникновение ошибки при установке удаленного параметра rest_framework. Спасибо Луису Сан-Пабло за исправление. ([#3715][gh3715]) 
- Добавьте отсутствующий csrf_token в пост-форме AdminRenderer. Спасибо Piotr Śniegowski за исправление. ([#3703][gh3703]) 
- Переработано - _get_reverse_relationships()для использования правильного- to_field. Спасибо Бенджамину Филлипсу за исправление. ([#3696][gh3696])
- Документируйте использование - get_querysetдля- RelatedField. Спасибо Райану Хиберту за исправление. ([#3605][gh3605])
- Исправьте определение пустого pk в HyperlinkRelatedField.get_url. Спасибо @jslang за исправление ([#3962][gh3962]) 
3.3.2¶
Дата : 14th December 2015.
- ListFieldзаставляет входные данные быть списком. ([#3513][gh3513])
- Исправьте регрессию, скрывающую форму сырых данных. ([#3600][gh3600], [#3578][gh3578]) 
- Исправьте совместимость с Python 3.5. ([#3534][gh3534], [#3626][gh3626]) 
- Разрешить установку пользовательского Django Paginator в - pagination.PageNumberPagination. ([#3631][gh3631], [#3684][gh3684])
- Исправьте реляционные поля без атрибута - to_fields. ([#3635][gh3635], [#3634][gh3634])
- Исправьте предупреждения о депривации - template.renderдля Django 1.9. ([#3654][gh3654])
- Сортировка заголовков ответа в просматриваемом рендере API. ([#3655][gh3655]) 
- Используйте related_objects api для Django 1.9+. ([#3656][gh3656], [#3252][gh3252]) 
- Добавьте модальное окно подтверждения при удалении. ([#3228][gh3228], [#3662][gh3662]) 
- Выявление ранее скрытых ошибок AttributeErrors и TypeErrors при вызове has** [object* ]разрешений. ([#3668][gh3668]) 
- Сделайте DRF совместимым с мультишаблонным движком в Django 1.8. ([#3672][gh3672]) 
- Обновите - NestedBoundFieldдля обработки пустой строки при выводе ее формы. ([#3677][gh3677])
- Исправьте проверку UUID, чтобы правильно отлавливать недопустимые типы ввода. ([#3687][gh3687], [#3679][gh3679]) 
- Исправьте проблемы с кэшированием. ([#3628][gh3628], [#3701][gh3701]) 
- Исправьте браузер Admin и API для представлений без filter_class. ([#3705][gh3705], [#3596][gh3596], [#3597][gh3597]) 
- Добавьте имя_приложения в rest_framework.urls. ([#3714][gh3714]) 
- Улучшите представления authtoken для поддержки версионности url. ([#3718][gh3718], [#3723][gh3723]) 
3.3.1¶
Дата : 4th November 2015.
- Устранение ошибки разбора при обращении к - request.POST([#3592][gh3592])
- Правильное решение проблемы с - to_field, относящейся к первичному ключу. ([#3593][gh3593])
- Разрешить отрисовку HTML фильтра, если не определено - filter_class. ([#3560][gh3560])
- Исправьте проблемы с рендерингом админки. ([#3564][gh3564], [#3556][gh3556]) 
- Исправьте проблему с DecimalValidator. ([#3568][gh3568]) 
3.3.0¶
Дата : 28th October 2015.
- Элементы управления HTML для фильтров. ([#3315][gh3315]) 
- Формы API. ([#3475][gh3475]) 
- API с возможностью просмотра AJAX. ([#3410][gh3410]) 
- Добавлено поле JSONField. ([#3454][gh3454]) 
- Корректное отображение - to_fieldпри создании реляционных полей- ModelSerializer. ([#3526][gh3526])
- Включите аргументы ключевых слов при отображении - FilePathFieldна поле сериализатора. ([#3536][gh3536])
- Составьте карту соответствующей модели - error_messagesна- ModelSerializerограничения уникальности. ([#3435][gh3435])
- Включите ограничение - max_lengthдля полей- ModelSerializer, отображаемых из TextField. ([#3509][gh3509])
- Добавлена поддержка Django 1.9. ([#3450][gh3450], [#3525][gh3525]) 
- Удалена поддержка Django 1.5 и 1.6. ([#3421][gh3421], [#3429][gh3429]) 
- Удалены «южные» миграции. ([#3495][gh3495]) 
Серия 3.2.x¶
3.2.5¶
Дата : 27th October 2015.
- Эскейп - usernameв необязательном теге выхода из системы. ([#3550][gh3550])
3.2.4¶
Дата : 21th September 2015.
- Не допускайте ошибок при отсутствии атрибута - ViewSet.search_fields. ([#3324][gh3324], [#3323][gh3323])
- Исправьте - allow_empty, не работающий на сериализаторах с- many=True. ([#3361][gh3361], [#3364][gh3364])
- Пусть - DurationFieldпринимает целые числа. ([#3359][gh3359])
- Многоуровневые словари не поддерживаются в многокомпонентных запросах. ([#3314][gh3314]) 
- Исправьте усечение - ListFieldпри HTTP PATCH ([#3415][gh3415], [#2761][gh2761])
3.2.3¶
Дата : 24th August 2015.
- Добавлены - html_cutoffи- html_cutoff_textдля ограничения выпадающих списков выбора. ([#3313][gh3313])
- Добавлен стиль regex для - SearchFilter. ([#3316][gh3316])
- Устранение проблем с установкой пустых HTML-полей. ([#3318][gh3318]) ([#3321][gh3321]) 
- Корректное отображение существующих значений „select multiple“ в просматриваемых формах API. ([#3290][gh3290]) 
- Устранение дублирующегося сообщения о проверке для - IPAddressField. ([#3249[gh3249]) ([#3250][gh3250])
- Исправление для обеспечения работы рендеринга администратора при отключенной пагинации. ([#3275][gh3275]) 
- Решить ошибку с - LimitOffsetPaginationпри count=0, offset=0. ([#3303][gh3303])
3.2.2¶
Дата : 13th August 2015.
- Добавьте метод - display_value()для использования при отображении входов выбора реляционного поля. ([#3254][gh3254])
- Исправление проблемы, когда флажки - BooleanFieldнекорректно отображались как отмеченные. ([#3258][gh3258])
- Убедитесь, что пустые флажки правильно устанавливают - BooleanFieldв- Falseво всех случаях. ([#2776][gh2776])
- Разрешить свойство - WSGIRequest.FILESбез возникновения некорректной ошибки deprecated. ([#3261][gh3261])
- Решите проблему с отображением вложенных сериализаторов в формах. ([#3260][gh3260]) 
- Вызывает ошибку, если пользователь случайно передает в ответ экземпляр сериализатора, а не данные. ([#3241][gh3241]) 
3.2.1¶
Дата : 7th August 2015.
- Исправление отображения виджетов реляционного выбора без выбора. ([#3237][gh3237]) 
- Исправление того, что - 1,- 0отображались как- true,- falseв интерфейсе администратора. [#3227][gh3227])
- Исправление для полей ListFields с одним значением в HTML-форме ввода. ([#3238][gh3238]) 
- Разрешите - request.FILESдля совместимости с классом- HTTPRequestв Django. ([#3239][gh3239])
3.2.0¶
Дата : 6th August 2015.
- Добавить - AdminRenderer. ([#2926][gh2926])
- Добавить - FilePathField. ([#1854][gh1854])
- Добавьте - allow_emptyк- ListField. ([#2250][gh2250])
- Поддержка django-guardian 1.3. ([#3165][gh3165]) 
- Поддержка сгруппированных вариантов. ([#3225][gh3225]) 
- Поддержка форм ошибок в просматриваемом API. ([#3024][gh3024]) 
- Разрешите классам прав настраивать сообщение об ошибке. ([#2539][gh2539]) 
- Поддержка - source=<method>в полях с гиперссылками. ([#2690][gh2690])
- ListField(allow_null=True)теперь позволяет использовать null в качестве значения списка, а не нулевые элементы в списке. ([#2766][gh2766])
- ManyToMany()отображается на- allow_empty=False,- ManyToMany(blank=True)отображается на- allow_empty=True. ([#2804][gh2804])
- Поддержка пользовательских стилей сериализации для полей первичного ключа. ([#2789][gh2789]) 
- OPTIONSзапросы поддерживают вложенные представления. ([#2915][gh2915])
- Установите - view.action == "metadata"для наборов просмотров с- OPTIONSзапросами. ([#3115][gh3115])
- Поддержка - allow_blankна- UUIDField. ([#3130][gh#3130])
- Не отображать докстринги представления с кодами ответа 401 или 403. ([#3216][gh3216]) 
- Устранение предупреждений об устаревании Django 1.8. ([#2886][gh2886]) 
- Исправление для валидации - DecimalField. ([#3139][gh3139])
- Исправьте поведение - allow_blank=Falseпри использовании- trim_whitespace=True. ([#2712][gh2712])
- Исправление проблемы, когда некоторые комбинации полей неправильно отображались на недопустимый аргумент - allow_blank. ([#3011][gh3011])
- Исправление для выходных представлений с префетчами и модифицированными кверисетами. ([#2704][gh2704], [#2727][gh2727]) 
- Исправьте ошибку утверждения, когда CursorPagination предоставляется с некоторыми недопустимыми параметрами запроса. (#2920)[gh2920]. 
- Исправьте - UnicodeDecodeError, когда недопустимые символы включены в заголовок с- TokenAuthentication. ([#2928][gh2928])
- Исправьте откат транзакций с помощью декоратора - @non_atomic_requests. ([#3016][gh3016])
- Исправьте проблему дублирования результатов в базах данных Oracle, использующих - SearchFilter. ([#2935][gh2935])
- Исправьте выравнивание и рендеринг чекбоксов в просматриваемых формах API. ([#2783][gh2783]) 
- Исправление для несохраненных объектов файлов, которые должны использовать - "url": nullв представлении. ([#2759][gh2759])
- Исправьте рендеринг значений полей в API с возможностью просмотра. ([#2416][gh2416]) 
- Исправьте - HStoreFieldдля включения- allow_blank=Trueв отображение- DictField. ([#2659][gh2659])
- Многочисленные другие исправления, улучшения в сообщениях об ошибках, приватном API и мелкие исправления. 
Серия 3.1.x¶
3.1.3¶
Дата : 4th June 2015.
- Добавить - DurationField. ([#2481][gh2481], [#2989][gh2989])
- Добавьте аргумент - formatк- UUIDField. ([#2788][gh2788], [#3000][gh3000])
- MultipleChoiceFieldнекорректное опустошение при частичном обновлении с использованием multipart/form-data ([#2993][gh2993], [#2894][gh2894])
- Исправьте ошибку в опциях, связанных с read-only - RelatedField. ([#2981][gh2981], [#2811][gh2811])
- Исправьте вложенные сериализаторы с отношениями - unique_together. ([#2975][gh2975])
- Разрешить неожиданные значения для представлений - ChoiceField/**- MultipleChoiceField. ([#2839][gh2839], [#2940][gh2940])
- Откат транзакции при ошибке, если установлено значение - ATOMIC_REQUESTS. ([#2887][gh2887], [#2034][gh2034])
- Устанавливает действие над представлением при override_method независимо от его None-ness. ([#2933][gh2933]) 
- DecimalFieldпринимает- 2E+2как 200 и правильно проверяет десятичный знак. ([#2948][gh2948], [#2947][gh2947])
- Поддержка базовой аутентификации с пользовательскими - UserModel, которые изменяют- username. ([#2952][gh2952])
- IPAddressFieldулучшения. ([#2747][gh2747], [#2618][gh2618], [#3008][gh3008])
- Улучшите - DecimalFieldдля упрощения подклассификации. ([#2695][gh2695])
3.1.2¶
Дата : 13rd May 2015.
- DateField.to_representationможет обрабатывать str и пустые значения. ([#2656][gh2656], [#2687][gh2687], [#2869][gh2869])
- Используйте фразы причины по умолчанию из стандарта HTTP. ([#2764][gh2764], [#2763][gh2763]) 
- Вызывать ошибку, когда - ModelSerializerиспользуется с абстрактной моделью. ([#2757][gh2757], [#2630][gh2630])
- Обработка обратного изменения неAPI view_name в - HyperLinkedRelatedField([#2724][gh2724], [#2711][gh2711])
- Не требуйте пк строго для смежных областей. ([#2745][gh2745], [#2754][gh2754]) 
- Метаданные обнаруживают нулевой тип поля boolean. ([#2762][gh2762]) 
- Правильная обработка глубины во вложенных сериализаторах. ([#2798][gh2798]) 
- Отображение набора представлений без пагинатора. ([#2807][gh2807]) 
- Не проверяйте наличие устаревшего атрибута - .modelв разрешениях ([#2818][gh2818])
- Ограничьте целочисленное поле целыми числами и строками. ([#2835][gh2835], [#2836][gh2836]) 
- Улучшите - IntegerFieldдля использования скомпилированного десятичного regex. ([#2853][gh2853])
- Запретите пустым - querysetвызывать AssertionError. ([#2862][gh2862])
- DjangoModelPermissionsполагайтесь на- get_queryset. ([#2863][gh2863])
- Проверьте - AcceptHeaderVersioningпри наличии согласования содержимого. ([#2868][gh2868])
- Разрешите - DjangoObjectPermissionsиспользовать представления, определяющие- get_queryset. ([#2905][gh2905])
3.1.1¶
Дата : 23rd March 2015.
- Исправление безопасности: Escape tab переключения имени cookie в просматриваемом API. 
- Отображение форм ввода в просматриваемом API, если используется - serializer_class, даже если метод- get_serializerне существует в представлении. ([#2743][gh2743])
- Используйте ввод пароля для AuthTokenSerializer. ([#2741][gh2741]) 
- Исправьте отсутствие закрывающего тега якоря после кнопки next. ([#2691][gh2691]) 
- Исправьте обработку - lookup_url_kwargв наборах представлений. ([#2685][gh2685], [#2591][gh2591])
- Исправьте проблему с импортом - rest_framework.viewsв- apps.py([#2678][gh2678])
- LimitOffsetPagination повышает - TypeErrorесли PAGE_SIZE не установлен ([#2667][gh2667], [#2700][gh2700])
- Немецкий перевод для сообщений об ошибке поля - min_valueссылки- max_value. ([#2645][gh2645])
- Удалить - MergeDict. ([#2640][gh2640])
- Поддержка сериализации несохраненных моделей со связанными полями. ([#2637][gh2637], [#2641][gh2641]) 
- Разрешить пустые/нулевые значения для вариантов radio.html. ([#2631][gh2631]) 
3.1.0¶
Дата : 5th March 2015.
Более подробную информацию можно найти в разделе 3.1 release announcement.
Серия 3.0.x¶
3.0.5¶
Дата : 10th February 2015.
- Исправьте ошибку, при которой - _closable_objectsнарушало пикировку. ([#1850][gh1850], [#2492][gh2492])
- Разрешить нестандартные модели - Userс- Throttling. ([#2524][gh2524])
- Поддержка пользовательского - User.db_tableв миграции TokenAuthentication. ([#2479][gh2479])
- Исправьте вводящие в заблуждение - AttributeErrorтрассировки на- Requestобъектах. ([#2530][gh2530], [#2108][gh2108])
- ManyRelatedField.get_valueочистка поля при частичном обновлении. ([#2475][gh2475])
- Удален ярлык „.model“ из кода. ([#2486][gh2486]) 
- Исправьте - detail_routeи- list_routeмутабельный аргумент. ([#2518][gh2518])
- Предварительная выборка объекта пользователя при получении токена в - TokenAuthentication. ([#2519][gh2519])
3.0.4¶
Дата : 28th January 2015.
- Поддержка Django 1.8a1. ([#2425][gh2425], [#2446][gh2446], [#2441][gh2441]) 
- Добавьте - DictFieldи поддержите Django 1.8- HStoreField. ([#2451][gh2451], [#2106][gh2106])
- Добавьте - UUIDFieldи поддержите Django 1.8- UUIDField. ([#2448][gh2448], [#2433][gh2433], [#2432][gh2432])
- BaseRenderer.renderтеперь повышает- NotImplementedError. ([#2434][gh2434])
- Исправьте сериализацию timedelta JSON на Python 2.6. ([#2430][gh2430]) 
- ResultDictи- ResultListтеперь отображаются как стандартный диктант/список. ([#2421][gh2421])
- Исправьте видимый - HiddenFieldв HTML-форме просматриваемой веб-страницы API. ([#2410][gh2410])
- Используйте - OrderedDictдля- RelatedField.choices. ([#2408][gh2408])
- Исправьте формат идентификатора при использовании - HTTP_X_FORWARDED_FOR. ([#2401][gh2401])
- Исправьте недействительный ключ в memcached при использовании дросселирования. ([#2400][gh2400]) 
- Исправьте - FileUploadParserс версией 3.x. ([#2399][gh2399])
- Исправьте наследование сериализатора. ([#2388][gh2388]) 
- Исправьте проблемы с кэшированием - ReturnDict. ([#2360][gh2360])
3.0.3¶
Дата : 8th January 2015.
- Исправьте - MinValueValidatorна- models.DateField. ([#2369][gh2369])
- Исправление отсутствия контекста в сериализаторе при использовании пагинации. ([#2355][gh2355]) 
- URL маршрутизаторов с именами теперь поддерживаются - DefaultRouter. ([#2351][gh2351])
- required=Falseпозволяет не указывать значение для вывода. ([#2342][gh2342])
- Используйте ввод текстовой области для - models.TextField. ([#2340][gh2340])
- При необходимости используйте пользовательские - ListSerializerдля пагинации. ([#2331][gh2331], [#2327][gh2327])
- Улучшено поведение с null и „“ для пустых HTML-полей. ([#2330][gh2330]) 
- Убедитесь, что поля в - excludeявляются полями модели. ([#2319][gh2319])
- Исправьте несовместимость аргументов - IntegerFieldи- max_length. ([#2317][gh2317])
- Исправьте кодировщик YAML для сериализаторов 3.0. ([#2315][gh2315], [#2283][gh2283]) 
- Исправьте поведение пустых HTML-полей. ([#2311][gh2311], [#1101][gh1101]) 
- Исправьте глубину атрибута Metaclass, игнорирующую атрибут fields. ([#2287][gh2287]) 
- Исправьте - format_suffix_patternsдля работы с- i18n_patternsот Django. ([#2278][gh2278])
- Возможность настраивать URL маршрутизатора для пользовательских действий, используя - url_path. ([#2010][gh2010])
- Не устанавливайте Django REST Framework как яйцо. ([#2386][gh2386]) 
3.0.2¶
Дата : 17th December 2014.
- Обеспечьте доступность - request.userдля промежуточного ПО ответа. ([#2155][gh2155])
- Client.logout()также отменяет все существующие- force_authenticate. ([#2218][gh2218], [#2259][gh2259])
- Дополнительные утверждения и улучшенные проверки для предотвращения неправильного использования API сериализатора. ([#2228][gh2228], [#2234][gh2234], [#2262][gh2262], [#2263][gh2263], [#2266][gh2266], [#2267][gh2267], [#2289][gh2289], [#2291][gh2291]) 
- Исправлено сообщение - min_lengthдля- CharField. ([#2255][gh2255])
- Исправление - UnicodeDecodeError, которое может возникнуть на сериализаторе- repr. ([#2270][gh2270], [#2279][gh2279])
- Исправьте пустые значения HTML, когда указано значение по умолчанию. ([#2280][gh2280], [#2294][gh2294]) 
- Исправьте - SlugRelatedField, повышающий- UnicodeEncodeErrorпри использовании в качестве ввода множественного выбора. ([#2290][gh2290])
3.0.1¶
Дата : 11th December 2014.
- Более полезное сообщение об ошибке, когда стандартный сериализатор - create()не работает. ([#2013][gh2013])
- Вызывать ошибку при попытке сохранить сериализатор, если данные не действительны. ([#2098][gh2098]) 
- Исправление ошибок - FileUploadParserпри пустых именах файлов и нескольких обработчиках загрузки. ([#2109][gh2109])
- Улучшите - BindingDictдля поддержки стандартных dict-функций. ([#2135][gh2135], [#2163][gh2163])
- Добавьте - validate()к- ListSerializer. ([#2168][gh2168], [#2225][gh2225], [#2232][gh2232])
- Исправьте ошибку рендеринга JSONP, когда некоторые символы не экранируются. ([#2169][gh2169], [#2195][gh2195]) 
- Добавьте недостающий стиль по умолчанию для - FileField. ([#2172][gh2172])
- Действия требуются при вызове - ViewSet.as_view(). ([#2175][gh2175])
- Добавьте - allow_blankк- ChoiceField. ([#2184][gh2184], [#2239][gh2239])
- Косметические исправления в рендере HTML. ([#2187][gh2187]) 
- Вызывать ошибку, если - fieldsна сериализаторе не является списком строк. ([#2193][gh2193], [#2213][gh2213])
- Улучшение проверки вложенных созданий и обновлений. ([#2194][gh2194], [#2196][gh2196]) 
- Аргумент - validated_attrsпереименован в- validated_dataв- Serializer- create()/**- update(). ([#2197][gh2197])
- Удалите устаревший код, чтобы отразить отмененные версии Django. ([#2200][gh2200]) 
- Улучшение ошибок сериализатора для вложенных записей. ([#2202][gh2202], [#2215][gh2215]) 
- Исправьте несовместимость пагинации и пользовательских разрешений. ([#2205][gh2205]) 
- Вызывать ошибку, если - fieldsна сериализаторе не является списком строк. ([#2213][gh2213])
- Добавьте отсутствующие маркеры перевода для реляционных полей. ([#2231][gh2231]) 
- Улучшите поведение поиска полей для dicts/mappings. ([#2244][gh2244], [#2243][gh2243]) 
- Оптимизированная гиперссылка PK. ([#2242][gh2242]) 
3.0.0¶
Дата: 1 декабря 2014 г.
Более подробную информацию можно найти в разделе 3.0 release announcement.
Для более ранних выпусков please see the version 2.x documentation.
[gh2013]: https://github.com/encode/django-rest-framework/issues/2013 [gh2098]: https://github.com/encode/django-rest-framework/issues/2098 [gh2109]: https://github.com/encode/django-rest-framework/issues/2109 [gh2135]: https://github.com/encode/django-rest-framework/issues/2135 [gh2163]: https://github.com/encode/django-rest-framework/issues/2163 [gh2168]: https://github.com/encode/django-rest-framework/issues/2168 [gh2169]: https://github.com/encode/django-rest-framework/issues/2169 [gh2172]: https://github.com/encode/django-rest-framework/issues/2172 [gh2175]: https://github.com/encode/django-rest-framework/issues/2175 [gh2184]: https://github.com/encode/django-rest-framework/issues/2184 [gh2187]: https://github.com/encode/django-rest-framework/issues/2187 [gh2193]: https://github.com/encode/django-rest-framework/issues/2193 [gh2194]: https://github.com/encode/django-rest-framework/issues/2194 [gh2195]: https://github.com/encode/django-rest-framework/issues/2195 [gh2196]: https://github.com/encode/django-rest-framework/issues/2196 [gh2197]: https://github.com/encode/django-rest-framework/issues/2197 [gh2200]: https://github.com/encode/django-rest-framework/issues/2200 [gh2202]: https://github.com/encode/django-rest-framework/issues/2202 [gh2205]: https://github.com/encode/django-rest-framework/issues/2205 [gh2213]: https://github.com/encode/django-rest-framework/issues/2213 [gh2213]: https://github.com/encode/django-rest-framework/issues/2213 [gh2215]: https://github.com/encode/django-rest-framework/issues/2215 [gh2225]: https://github.com/encode/django-rest-framework/issues/2225 [gh2231]: https://github.com/encode/django-rest-framework/issues/2231 [gh2232]: https://github.com/encode/django-rest-framework/issues/2232 [gh2239]: https://github.com/encode/django-rest-framework/issues/2239 [gh2242]: https://github.com/encode/django-rest-framework/issues/2242 [gh2243]: https://github.com/encode/django-rest-framework/issues/2243 [gh2244]: https://github.com/encode/django-rest-framework/issues/2244 [gh2155]: https://github.com/encode/django-rest-framework/issues/2155 [gh2218]: https://github.com/encode/django-rest-framework/issues/2218 [gh2228]: https://github.com/encode/django-rest-framework/issues/2228 [gh2234]: https://github.com/encode/django-rest-framework/issues/2234 [gh2255]: https://github.com/encode/django-rest-framework/issues/2255 [gh2259]: https://github.com/encode/django-rest-framework/issues/2259 [gh2262]: https://github.com/encode/django-rest-framework/issues/2262 [gh2263]: https://github.com/encode/django-rest-framework/issues/2263 [gh2266]: https://github.com/encode/django-rest-framework/issues/2266 [gh2267]: https://github.com/encode/django-rest-framework/issues/2267 [gh2270]: https://github.com/encode/django-rest-framework/issues/2270 [gh2279]: https://github.com/encode/django-rest-framework/issues/2279 [gh2280]: https://github.com/encode/django-rest-framework/issues/2280 [gh2289]: https://github.com/encode/django-rest-framework/issues/2289 [gh2290]: https://github.com/encode/django-rest-framework/issues/2290 [gh2291]: https://github.com/encode/django-rest-framework/issues/2291 [gh2294]: https://github.com/encode/django-rest-framework/issues/2294 [gh1101]: https://github.com/encode/django-rest-framework/issues/1101 [gh2010]: https://github.com/encode/django-rest-framework/issues/2010 [gh2278]: https://github.com/encode/django-rest-framework/issues/2278 [gh2283]: https://github.com/encode/django-rest-framework/issues/2283 [gh2287]: https://github.com/encode/django-rest-framework/issues/2287 [gh2311]: https://github.com/encode/django-rest-framework/issues/2311 [gh2315]: https://github.com/encode/django-rest-framework/issues/2315 [gh2317]: https://github.com/encode/django-rest-framework/issues/2317 [gh2319]: https://github.com/encode/django-rest-framework/issues/2319 [gh2327]: https://github.com/encode/django-rest-framework/issues/2327 [gh2330]: https://github.com/encode/django-rest-framework/issues/2330 [gh2331]: https://github.com/encode/django-rest-framework/issues/2331 [gh2340]: https://github.com/encode/django-rest-framework/issues/2340 [gh2342]: https://github.com/encode/django-rest-framework/issues/2342 [gh2351]: https://github.com/encode/django-rest-framework/issues/2351 [gh2355]: https://github.com/encode/django-rest-framework/issues/2355 [gh2369]: https://github.com/encode/django-rest-framework/issues/2369 [gh2386]: https://github.com/encode/django-rest-framework/issues/2386 [gh2425]: https://github.com/encode/django-rest-framework/issues/2425 [gh2446]: https://github.com/encode/django-rest-framework/issues/2446 [gh2441]: https://github.com/encode/django-rest-framework/issues/2441 [gh2451]: https://github.com/encode/django-rest-framework/issues/2451 [gh2106]: https://github.com/encode/django-rest-framework/issues/2106 [gh2448]: https://github.com/encode/django-rest-framework/issues/2448 [gh2433]: https://github.com/encode/django-rest-framework/issues/2433 [gh2432]: https://github.com/encode/django-rest-framework/issues/2432 [gh2434]: https://github.com/encode/django-rest-framework/issues/2434 [gh2430]: https://github.com/encode/django-rest-framework/issues/2430 [gh2421]: https://github.com/encode/django-rest-framework/issues/2421 [gh2410]: https://github.com/encode/django-rest-framework/issues/2410 [gh2408]: https://github.com/encode/django-rest-framework/issues/2408 [gh2401]: https://github.com/encode/django-rest-framework/issues/2401 [gh2400]: https://github.com/encode/django-rest-framework/issues/2400 [gh2399]: https://github.com/encode/django-rest-framework/issues/2399 [gh2388]: https://github.com/encode/django-rest-framework/issues/2388 [gh2360]: https://github.com/encode/django-rest-framework/issues/2360 [gh1850]: https://github.com/encode/django-rest-framework/issues/1850 [gh2108]: https://github.com/encode/django-rest-framework/issues/2108 [gh2475]: https://github.com/encode/django-rest-framework/issues/2475 [gh2479]: https://github.com/encode/django-rest-framework/issues/2479 [gh2486]: https://github.com/encode/django-rest-framework/issues/2486 [gh2492]: https://github.com/encode/django-rest-framework/issues/2492 [gh2518]: https://github.com/encode/django-rest-framework/issues/2518 [gh2519]: https://github.com/encode/django-rest-framework/issues/2519 [gh2524]: https://github.com/encode/django-rest-framework/issues/2524 [gh2530]: https://github.com/encode/django-rest-framework/issues/2530 [gh2691]: https://github.com/encode/django-rest-framework/issues/2691 [gh2685]: https://github.com/encode/django-rest-framework/issues/2685 [gh2591]: https://github.com/encode/django-rest-framework/issues/2591 [gh2678]: https://github.com/encode/django-rest-framework/issues/2678 [gh2667]: https://github.com/encode/django-rest-framework/issues/2667 [gh2700]: https://github.com/encode/django-rest-framework/issues/2700 [gh2645]: https://github.com/encode/django-rest-framework/issues/2645 [gh2640]: https://github.com/encode/django-rest-framework/issues/2640 [gh2637]: https://github.com/encode/django-rest-framework/issues/2637 [gh2641]: https://github.com/encode/django-rest-framework/issues/2641 [gh2631]: https://github.com/encode/django-rest-framework/issues/2631 [gh2741]: https://github.com/encode/django-rest-framework/issues/2641 [gh2743]: https://github.com/encode/django-rest-framework/issues/2643 [gh2656]: https://github.com/encode/django-rest-framework/issues/2656 [gh2687]: https://github.com/encode/django-rest-framework/issues/2687 [gh2869]: https://github.com/encode/django-rest-framework/issues/2869 [gh2764]: https://github.com/encode/django-rest-framework/issues/2764 [gh2763]: https://github.com/encode/django-rest-framework/issues/2763 [gh2757]: https://github.com/encode/django-rest-framework/issues/2757 [gh2630]: https://github.com/encode/django-rest-framework/issues/2630 [gh2724]: https://github.com/encode/django-rest-framework/issues/2724 [gh2711]: https://github.com/encode/django-rest-framework/issues/2711 [gh2745]: https://github.com/encode/django-rest-framework/issues/2745 [gh2754]: https://github.com/encode/django-rest-framework/issues/2754 [gh2762]: https://github.com/encode/django-rest-framework/issues/2762 [gh2798]: https://github.com/encode/django-rest-framework/issues/2798 [gh2807]: https://github.com/encode/django-rest-framework/issues/2807 [gh2818]: https://github.com/encode/django-rest-framework/issues/2818 [gh2835]: https://github.com/encode/django-rest-framework/issues/2835 [gh2836]: https://github.com/encode/django-rest-framework/issues/2836 [gh2853]: https://github.com/encode/django-rest-framework/issues/2853 [gh2862]: https://github.com/encode/django-rest-framework/issues/2862 [gh2863]: https://github.com/encode/django-rest-framework/issues/2863 [gh2868]: https://github.com/encode/django-rest-framework/issues/2868 [gh2905]: https://github.com/encode/django-rest-framework/issues/2905 [gh2481]: https://github.com/encode/django-rest-framework/issues/2481 [gh2989]: https://github.com/encode/django-rest-framework/issues/2989 [gh2788]: https://github.com/encode/django-rest-framework/issues/2788 [gh3000]: https://github.com/encode/django-rest-framework/issues/3000 [gh2993]: https://github.com/encode/django-rest-framework/issues/2993 [gh2894]: https://github.com/encode/django-rest-framework/issues/2894 [gh2981]: https://github.com/encode/django-rest-framework/issues/2981 [gh2811]: https://github.com/encode/django-rest-framework/issues/2811 [gh2975]: https://github.com/encode/django-rest-framework/issues/2975 [gh2839]: https://github.com/encode/django-rest-framework/issues/2839 [gh2940]: https://github.com/encode/django-rest-framework/issues/2940 [gh2887]: https://github.com/encode/django-rest-framework/issues/2887 [gh2034]: https://github.com/encode/django-rest-framework/issues/2034 [gh2933]: https://github.com/encode/django-rest-framework/issues/2933 [gh2948]: https://github.com/encode/django-rest-framework/issues/2948 [gh2947]: https://github.com/encode/django-rest-framework/issues/2947 [gh2952]: https://github.com/encode/django-rest-framework/issues/2952 [gh2747]: https://github.com/encode/django-rest-framework/issues/2747 [gh2618]: https://github.com/encode/django-rest-framework/issues/2618 [gh3008]: https://github.com/encode/django-rest-framework/issues/3008 [gh2695]: https://github.com/encode/django-rest-framework/issues/2695 [gh1854]: https://github.com/encode/django-rest-framework/issues/1854 [gh2250]: https://github.com/encode/django-rest-framework/issues/2250 [gh2416]: https://github.com/encode/django-rest-framework/issues/2416 [gh2539]: https://github.com/encode/django-rest-framework/issues/2539 [gh2659]: https://github.com/encode/django-rest-framework/issues/2659 [gh2690]: https://github.com/encode/django-rest-framework/issues/2690 [gh2704]: https://github.com/encode/django-rest-framework/issues/2704 [gh2712]: https://github.com/encode/django-rest-framework/issues/2712 [gh2727]: https://github.com/encode/django-rest-framework/issues/2727 [gh2759]: https://github.com/encode/django-rest-framework/issues/2759 [gh2766]: https://github.com/encode/django-rest-framework/issues/2766 [gh2783]: https://github.com/encode/django-rest-framework/issues/2783 [gh2789]: https://github.com/encode/django-rest-framework/issues/2789 [gh2804]: https://github.com/encode/django-rest-framework/issues/2804 [gh2886]: https://github.com/encode/django-rest-framework/issues/2886 [gh2915]: https://github.com/encode/django-rest-framework/issues/2915 [gh2920]: https://github.com/encode/django-rest-framework/issues/2920 [gh2926]: https://github.com/encode/django-rest-framework/issues/2926 [gh2928]: https://github.com/encode/django-rest-framework/issues/2928 [gh2935]: https://github.com/encode/django-rest-framework/issues/2935 [gh3011]: https://github.com/encode/django-rest-framework/issues/3011 [gh3016]: https://github.com/encode/django-rest-framework/issues/3016 [gh3024]: https://github.com/encode/django-rest-framework/issues/3024 [gh3115]: https://github.com/encode/django-rest-framework/issues/3115 [gh3139]: https://github.com/encode/django-rest-framework/issues/3139 [gh3165]: https://github.com/encode/django-rest-framework/issues/3165 [gh3216]: https://github.com/encode/django-rest-framework/issues/3216 [gh3225]: https://github.com/encode/django-rest-framework/issues/3225 [gh3237]: https://github.com/encode/django-rest-framework/issues/3237 [gh3227]: https://github.com/encode/django-rest-framework/issues/3227 [gh3238]: https://github.com/encode/django-rest-framework/issues/3238 [gh3239]: https://github.com/encode/django-rest-framework/issues/3239 [gh3254]: https://github.com/encode/django-rest-framework/issues/3254 [gh3258]: https://github.com/encode/django-rest-framework/issues/3258 [gh2776]: https://github.com/encode/django-rest-framework/issues/2776 [gh3261]: https://github.com/encode/django-rest-framework/issues/3261 [gh3260]: https://github.com/encode/django-rest-framework/issues/3260 [gh3241]: https://github.com/encode/django-rest-framework/issues/3241 [gh3249]: https://github.com/encode/django-rest-framework/issues/3249 [gh3250]: https://github.com/encode/django-rest-framework/issues/3250 [gh3275]: https://github.com/encode/django-rest-framework/issues/3275 [gh3290]: https://github.com/encode/django-rest-framework/issues/3290 [gh3303]: https://github.com/encode/django-rest-framework/issues/3303 [gh3313]: https://github.com/encode/django-rest-framework/issues/3313 [gh3316]: https://github.com/encode/django-rest-framework/issues/3316 [gh3318]: https://github.com/encode/django-rest-framework/issues/3318 [gh3321]: https://github.com/encode/django-rest-framework/issues/3321 [gh2761]: https://github.com/encode/django-rest-framework/issues/2761 [gh3314]: https://github.com/encode/django-rest-framework/issues/3314 [gh3323]: https://github.com/encode/django-rest-framework/issues/3323 [gh3324]: https://github.com/encode/django-rest-framework/issues/3324 [gh3359]: https://github.com/encode/django-rest-framework/issues/3359 [gh3361]: https://github.com/encode/django-rest-framework/issues/3361 [gh3364]: https://github.com/encode/django-rest-framework/issues/3364 [gh3415]: https://github.com/encode/django-rest-framework/issues/3415 [gh3550]:https://github.com/encode/django-rest-framework/issues/3550 [gh3315]: https://github.com/encode/django-rest-framework/issues/3315 [gh3410]: https://github.com/encode/django-rest-framework/issues/3410 [gh3435]: https://github.com/encode/django-rest-framework/issues/3435 [gh3450]: https://github.com/encode/django-rest-framework/issues/3450 [gh3454]: https://github.com/encode/django-rest-framework/issues/3454 [gh3475]: https://github.com/encode/django-rest-framework/issues/3475 [gh3495]: https://github.com/encode/django-rest-framework/issues/3495 [gh3509]: https://github.com/encode/django-rest-framework/issues/3509 [gh3421]: https://github.com/encode/django-rest-framework/issues/3421 [gh3525]: https://github.com/encode/django-rest-framework/issues/3525 [gh3526]: https://github.com/encode/django-rest-framework/issues/3526 [gh3429]: https://github.com/encode/django-rest-framework/issues/3429 [gh3536]: https://github.com/encode/django-rest-framework/issues/3536 [gh3556]: https://github.com/encode/django-rest-framework/issues/3556 [gh3560]: https://github.com/encode/django-rest-framework/issues/3560 [gh3564]: https://github.com/encode/django-rest-framework/issues/3564 [gh3568]: https://github.com/encode/django-rest-framework/issues/3568 [gh3592]: https://github.com/encode/django-rest-framework/issues/3592 [gh3593]: https://github.com/encode/django-rest-framework/issues/3593 [gh3228]: https://github.com/encode/django-rest-framework/issues/3228 [gh3252]: https://github.com/encode/django-rest-framework/issues/3252 [gh3513]: https://github.com/encode/django-rest-framework/issues/3513 [gh3534]: https://github.com/encode/django-rest-framework/issues/3534 [gh3578]: https://github.com/encode/django-rest-framework/issues/3578 [gh3596]: https://github.com/encode/django-rest-framework/issues/3596 [gh3597]: https://github.com/encode/django-rest-framework/issues/3597 [gh3600]: https://github.com/encode/django-rest-framework/issues/3600 [gh3626]: https://github.com/encode/django-rest-framework/issues/3626 [gh3628]: https://github.com/encode/django-rest-framework/issues/3628 [gh3631]: https://github.com/encode/django-rest-framework/issues/3631 [gh3634]: https://github.com/encode/django-rest-framework/issues/3634 [gh3635]: https://github.com/encode/django-rest-framework/issues/3635 [gh3654]: https://github.com/encode/django-rest-framework/issues/3654 [gh3655]: https://github.com/encode/django-rest-framework/issues/3655 [gh3656]: https://github.com/encode/django-rest-framework/issues/3656 [gh3662]: https://github.com/encode/django-rest-framework/issues/3662 [gh3668]: https://github.com/encode/django-rest-framework/issues/3668 [gh3672]: https://github.com/encode/django-rest-framework/issues/3672 [gh3677]: https://github.com/encode/django-rest-framework/issues/3677 [gh3679]: https://github.com/encode/django-rest-framework/issues/3679 [gh3684]: https://github.com/encode/django-rest-framework/issues/3684 [gh3687]: https://github.com/encode/django-rest-framework/issues/3687 [gh3701]: https://github.com/encode/django-rest-framework/issues/3701 [gh3705]: https://github.com/encode/django-rest-framework/issues/3705 [gh3714]: https://github.com/encode/django-rest-framework/issues/3714 [gh3718]: https://github.com/encode/django-rest-framework/issues/3718 [gh3723]: https://github.com/encode/django-rest-framework/issues/3723 [gh3968]: https://github.com/encode/django-rest-framework/issues/3968 [gh3962]: https://github.com/encode/django-rest-framework/issues/3962 [gh3913]: https://github.com/encode/django-rest-framework/issues/3913 [gh3912]: https://github.com/encode/django-rest-framework/issues/3912 [gh3910]: https://github.com/encode/django-rest-framework/issues/3910 [gh3903]: https://github.com/encode/django-rest-framework/issues/3903 [gh3887]: https://github.com/encode/django-rest-framework/issues/3887 [gh3878]: https://github.com/encode/django-rest-framework/issues/3878 [gh3860]: https://github.com/encode/django-rest-framework/issues/3860 [gh3858]: https://github.com/encode/django-rest-framework/issues/3858 [gh3842]: https://github.com/encode/django-rest-framework/issues/3842 [gh3833]: https://github.com/encode/django-rest-framework/issues/3833 [gh3832]: https://github.com/encode/django-rest-framework/issues/3832 [gh3819]: https://github.com/encode/django-rest-framework/issues/3819 [gh3815]: https://github.com/encode/django-rest-framework/issues/3815 [gh3809]: https://github.com/encode/django-rest-framework/issues/3809 [gh3805]: https://github.com/encode/django-rest-framework/issues/3805 [gh3804]: https://github.com/encode/django-rest-framework/issues/3804 [gh3801]: https://github.com/encode/django-rest-framework/issues/3801 [gh3787]: https://github.com/encode/django-rest-framework/issues/3787 [gh3786]: https://github.com/encode/django-rest-framework/issues/3786 [gh3785]: https://github.com/encode/django-rest-framework/issues/3785 [gh3774]: https://github.com/encode/django-rest-framework/issues/3774 [gh3769]: https://github.com/encode/django-rest-framework/issues/3769 [gh3753]: https://github.com/encode/django-rest-framework/issues/3753 [gh3739]: https://github.com/encode/django-rest-framework/issues/3739 [gh3731]: https://github.com/encode/django-rest-framework/issues/3731 [gh3728]: https://github.com/encode/django-rest-framework/issues/3726 [gh3715]: https://github.com/encode/django-rest-framework/issues/3715 [gh3703]: https://github.com/encode/django-rest-framework/issues/3703 [gh3696]: https://github.com/encode/django-rest-framework/issues/3696 [gh3637]: https://github.com/encode/django-rest-framework/issues/3637 [gh3636]: https://github.com/encode/django-rest-framework/issues/3636 [gh3605]: https://github.com/encode/django-rest-framework/issues/3605 [gh3604]: https://github.com/encode/django-rest-framework/issues/3604 [gh2403]: https://github.com/encode/django-rest-framework/issues/2403 [gh2848]: https://github.com/encode/django-rest-framework/issues/2848 [gh2996]: https://github.com/encode/django-rest-framework/issues/2996 [gh3164]: https://github.com/encode/django-rest-framework/issues/3164 [gh3273]: https://github.com/encode/django-rest-framework/issues/3273 [gh3381]: https://github.com/encode/django-rest-framework/issues/3381 [gh3438]: https://github.com/encode/django-rest-framework/issues/3438 [gh3444]: https://github.com/encode/django-rest-framework/issues/3444 [gh3476]: https://github.com/encode/django-rest-framework/issues/3476 [gh3487]: https://github.com/encode/django-rest-framework/issues/3487 [gh3541]: https://github.com/encode/django-rest-framework/issues/3541 [gh3710]: https://github.com/encode/django-rest-framework/issues/3710 [gh3729]: https://github.com/encode/django-rest-framework/issues/3729 [gh3751]: https://github.com/encode/django-rest-framework/issues/3751 [gh3812]: https://github.com/encode/django-rest-framework/issues/3812 [gh3816]: https://github.com/encode/django-rest-framework/issues/3816 [gh3820]: https://github.com/encode/django-rest-framework/issues/3820 [gh3906]: https://github.com/encode/django-rest-framework/issues/3906 [gh3908]: https://github.com/encode/django-rest-framework/issues/3908 [gh3926]: https://github.com/encode/django-rest-framework/issues/3926 [gh3933]: https://github.com/encode/django-rest-framework/issues/3933 [gh3936]: https://github.com/encode/django-rest-framework/issues/3936 [gh3938]: https://github.com/encode/django-rest-framework/issues/3938 [gh3943]: https://github.com/encode/django-rest-framework/issues/3943 [gh3953]: https://github.com/encode/django-rest-framework/issues/3953 [gh3964]: https://github.com/encode/django-rest-framework/issues/3964 [gh3968]: https://github.com/encode/django-rest-framework/issues/3968 [gh3970]: https://github.com/encode/django-rest-framework/issues/3970 [gh3971]: https://github.com/encode/django-rest-framework/issues/3971 [gh3976]: https://github.com/encode/django-rest-framework/issues/3976 [gh3983]: https://github.com/encode/django-rest-framework/issues/3983 [gh3990]: https://github.com/encode/django-rest-framework/issues/3990 [gh4002]: https://github.com/encode/django-rest-framework/issues/4002 [gh4003]: https://github.com/encode/django-rest-framework/issues/4003 [gh4005]: https://github.com/encode/django-rest-framework/issues/4005 [gh4006]: https://github.com/encode/django-rest-framework/issues/4006 [gh4008]: https://github.com/encode/django-rest-framework/issues/4008 [gh4021]: https://github.com/encode/django-rest-framework/issues/4021 [gh4025]: https://github.com/encode/django-rest-framework/issues/4025 [gh4040]: https://github.com/encode/django-rest-framework/issues/4040 [gh4041]: https://github.com/encode/django-rest-framework/issues/4041 [gh4049]: https://github.com/encode/django-rest-framework/issues/4049 [gh4075]: https://github.com/encode/django-rest-framework/issues/4075 [gh4079]: https://github.com/encode/django-rest-framework/issues/4079 [gh4090]: https://github.com/encode/django-rest-framework/issues/4090 [gh4097]: https://github.com/encode/django-rest-framework/issues/4097 [gh4098]: https://github.com/encode/django-rest-framework/issues/4098 [gh4103]: https://github.com/encode/django-rest-framework/issues/4103 [gh4105]: https://github.com/encode/django-rest-framework/issues/4105 [gh4106]: https://github.com/encode/django-rest-framework/issues/4106 [gh4107]: https://github.com/encode/django-rest-framework/issues/4107 [gh4118]: https://github.com/encode/django-rest-framework/issues/4118 [gh4146]: https://github.com/encode/django-rest-framework/issues/4146 [gh4149]: https://github.com/encode/django-rest-framework/issues/4149 [gh4153]: https://github.com/encode/django-rest-framework/issues/4153 [gh4156]: https://github.com/encode/django-rest-framework/issues/4156 [gh4157]: https://github.com/encode/django-rest-framework/issues/4157 [gh4158]: https://github.com/encode/django-rest-framework/issues/4158 [gh4166]: https://github.com/encode/django-rest-framework/issues/4166 [gh4176]: https://github.com/encode/django-rest-framework/issues/4176 [gh4179]: https://github.com/encode/django-rest-framework/issues/4179 [gh4180]: https://github.com/encode/django-rest-framework/issues/4180 [gh4181]: https://github.com/encode/django-rest-framework/issues/4181 [gh4185]: https://github.com/encode/django-rest-framework/issues/4185 [gh4187]: https://github.com/encode/django-rest-framework/issues/4187 [gh4191]: https://github.com/encode/django-rest-framework/issues/4191 [gh4192]: https://github.com/encode/django-rest-framework/issues/4192 [gh4194]: https://github.com/encode/django-rest-framework/issues/4194 [gh4195]: https://github.com/encode/django-rest-framework/issues/4195 [gh4196]: https://github.com/encode/django-rest-framework/issues/4196 [gh4212]: https://github.com/encode/django-rest-framework/issues/4212 [gh4215]: https://github.com/encode/django-rest-framework/issues/4215 [gh4217]: https://github.com/encode/django-rest-framework/issues/4217 [gh4219]: https://github.com/encode/django-rest-framework/issues/4219 [gh4229]: https://github.com/encode/django-rest-framework/issues/4229 [gh4233]: https://github.com/encode/django-rest-framework/issues/4233 [gh4244]: https://github.com/encode/django-rest-framework/issues/4244 [gh4246]: https://github.com/encode/django-rest-framework/issues/4246 [gh4253]: https://github.com/encode/django-rest-framework/issues/4253 [gh4254]: https://github.com/encode/django-rest-framework/issues/4254 [gh4255]: https://github.com/encode/django-rest-framework/issues/4255 [gh4256]: https://github.com/encode/django-rest-framework/issues/4256 [gh4259]: https://github.com/encode/django-rest-framework/issues/4259 [gh4323]: https://github.com/encode/django-rest-framework/issues/4323 [gh4268]: https://github.com/encode/django-rest-framework/issues/4268 [gh4321]: https://github.com/encode/django-rest-framework/issues/4321 [gh4308]: https://github.com/encode/django-rest-framework/issues/4308 [gh4305]: https://github.com/encode/django-rest-framework/issues/4305 [gh4316]: https://github.com/encode/django-rest-framework/issues/4316 [gh4294]: https://github.com/encode/django-rest-framework/issues/4294 [gh4293]: https://github.com/encode/django-rest-framework/issues/4293 [gh4315]: https://github.com/encode/django-rest-framework/issues/4315 [gh4314]: https://github.com/encode/django-rest-framework/issues/4314 [gh4289]: https://github.com/encode/django-rest-framework/issues/4289 [gh4265]: https://github.com/encode/django-rest-framework/issues/4265 [gh4285]: https://github.com/encode/django-rest-framework/issues/4285 [gh4287]: https://github.com/encode/django-rest-framework/issues/4287 [gh4313]: https://github.com/encode/django-rest-framework/issues/4313 [gh4281]: https://github.com/encode/django-rest-framework/issues/4281 [gh4299]: https://github.com/encode/django-rest-framework/issues/4299 [gh4307]: https://github.com/encode/django-rest-framework/issues/4307 [gh4302]: https://github.com/encode/django-rest-framework/issues/4302 [gh4303]: https://github.com/encode/django-rest-framework/issues/4303 [gh4298]: https://github.com/encode/django-rest-framework/issues/4298 [gh4291]: https://github.com/encode/django-rest-framework/issues/4291 [gh4270]: https://github.com/encode/django-rest-framework/issues/4270 [gh4272]: https://github.com/encode/django-rest-framework/issues/4272 [gh4273]: https://github.com/encode/django-rest-framework/issues/4273 [gh4288]: https://github.com/encode/django-rest-framework/issues/4288 [gh3565]: https://github.com/encode/django-rest-framework/issues/3565 [gh3610]: https://github.com/encode/django-rest-framework/issues/3610 [gh4198]: https://github.com/encode/django-rest-framework/issues/4198 [gh4199]: https://github.com/encode/django-rest-framework/issues/4199 [gh4236]: https://github.com/encode/django-rest-framework/issues/4236 [gh4292]: https://github.com/encode/django-rest-framework/issues/4292 [gh4296]: https://github.com/encode/django-rest-framework/issues/4296 [gh4318]: https://github.com/encode/django-rest-framework/issues/4318 [gh4330]: https://github.com/encode/django-rest-framework/issues/4330 [gh4331]: https://github.com/encode/django-rest-framework/issues/4331 [gh4332]: https://github.com/encode/django-rest-framework/issues/4332 [gh4335]: https://github.com/encode/django-rest-framework/issues/4335 [gh4336]: https://github.com/encode/django-rest-framework/issues/4336 [gh4338]: https://github.com/encode/django-rest-framework/issues/4338 [gh4339]: https://github.com/encode/django-rest-framework/issues/4339 [gh4340]: https://github.com/encode/django-rest-framework/issues/4340 [gh4344]: https://github.com/encode/django-rest-framework/issues/4344 [gh4345]: https://github.com/encode/django-rest-framework/issues/4345 [gh4346]: https://github.com/encode/django-rest-framework/issues/4346 [gh4347]: https://github.com/encode/django-rest-framework/issues/4347 [gh4348]: https://github.com/encode/django-rest-framework/issues/4348 [gh4349]: https://github.com/encode/django-rest-framework/issues/4349 [gh4354]: https://github.com/encode/django-rest-framework/issues/4354 [gh4357]: https://github.com/encode/django-rest-framework/issues/4357 [gh4358]: https://github.com/encode/django-rest-framework/issues/4358 [gh4359]: https://github.com/encode/django-rest-framework/issues/4359 [gh4361]: https://github.com/encode/django-rest-framework/issues/4361 [gh4416]: https://github.com/encode/django-rest-framework/issues/4416 [gh4409]: https://github.com/encode/django-rest-framework/issues/4409 [gh4415]: https://github.com/encode/django-rest-framework/issues/4415 [gh4410]: https://github.com/encode/django-rest-framework/issues/4410 [gh4408]: https://github.com/encode/django-rest-framework/issues/4408 [gh4398]: https://github.com/encode/django-rest-framework/issues/4398 [gh4407]: https://github.com/encode/django-rest-framework/issues/4407 [gh4403]: https://github.com/encode/django-rest-framework/issues/4403 [gh4404]: https://github.com/encode/django-rest-framework/issues/4404 [gh4412]: https://github.com/encode/django-rest-framework/issues/4412