This month has been dominated by working towards a new 3.4 release, with headline features of built-in schema generation, and client library support.
You can get some pre-release reading on all of this, in the schema-support pull request.
The 3.4 release will be out sometime in July. Issues & pull requests We’re down from 211 tickets at the start of the month, to 178 at the end. Right now getting the new release out is my priority. I’d expect to focus on triage again following the next release.
#4154
- Clean up code style in tests. Accepted & merged#3957
- OrderingFilter
should call get_serializer_class()
to determine default fields. Closed via #4156
#3964
- OrderingFilter
should call get_serializer_class()
to determine default fields. Closed via #4156
#4073
- Errors from parent-level validation of nested serializer fields break the browsable API. Confirmed#4157
- Updated jQuery version to 1.12.4 Accepted & merged#3729
- Django 1.9 deprecation warnings. Closed via #4158
#3751
- OPTIONS fetches and shows all possible foreign keys in choices field. Closed via #4021
#4021
- Do not list related field choices in OPTIONS requests. Accepted & merged#4004
- Add field’s initial value to metadata. Closed#4161
- Updated Guardian and Filter Versions. Accepted & merged#4163
- Making Meta.depth
dynamically adjustable. Closed#4164
- Making Meta.depth
dynamically adjustable. Closed#3906
- Attempt to address Django 2.0 deprecate warnings related to field.rel. Closed via #4166
#4062
- Fix remote_field deprecation warning. Closed via #4166
#3532
- Allow relative URLs. Closed via commit 75751cc
#4030
- OPTIONS fields type doesn’t return “multiple choice” for generic ManyToMany fields on ModelSerilalizer subclasses. Closed.#4031
- serializers.ManyRelatedField added to SimpleMetadata.label_lookup.#3812
- Do not HTML-escape help_text
in Browsable API forms. Accepted & merged#4167
- FileUploadView documentation needs update. Closed via #4169
#4168
- FileUploadParser, “filename” keyword argument is ignored. Closed#4128
- Token-based Authentication docs should note empty throttling/permission defaults. Closed via #4173
#3934
- Fixes typos and added a little help for httpie. Closed via #4174
#3984
- Fixed RelatedField(required=False) bug. Closed as invalid#3855
- Turn style assertions into warnings, so they can be opted out of. Closed as invalid.#3784
- Always set FileField.use_url
property. Closed.#3778
- Allow for JSON encoding of datetime.tzinfo objects. Closed as invalid.#4032
- Admin Renderer and DELETE Method. Closed as resolved.#4127
- Redirect on DELETE when using AdminRenderer. Closed as resolved.#3590
- Unable to to specify RelatedManger relationships on ManyRelatedField. Closed as invalid.#4177
- Include Django as a dependency. Closed#3437
- Return empty list rather than empty dict for serializers with many=True. Closed via #4180
#3434
- Serializers with many=True should return empty list rather than empty dict. Closed via #4180
#3476
- Serializers with many=True should return empty list rather than empty dict. Closed via #4180
#3164
- Retry form rendering when rendering with serializer fails. Closed via #4181
#4183
- Dealing with a recursive ManyToMany field. Closed#4184
- List of file fields. Closed as duplicate#4185
- JSONField doesn’t enforce valid JSON input. Closed as invalid#4186
- timezone.now()
filtering not working. Closed as invalid#4182
- Allow Overriding Key for Results when Paginating. Closed as invalid#4189
- Allow IPAddressField and GenericIPAddressField blankable. Closed as invalid#4190
- PUT method not updating nested serializer due to ‘unique’ field restriction. Closed as duplicate#2403
- UniqueValidator raises exception for nested objects. Closed as duplicate#4185
- JSONField doesn’t enforce valid JSON input. Closed as invalid#4187
- JSONField(binary=True) represents using binary strings, which JSONRenderer does not support. Closed via #4191
#2848
- Uniqueness validators should not be run for excluded (read_only) fields. Closed via #4192
#3970
- ListSerializer doesn’t handle unique_together constraints. Closed via #4192
#2996
- Unique constraint prevents nested serializers from updating. Closed via #4192
#4053
- Configurable offset cutoff with CursorPagination. Closed#3990
- Fixed admin pagination when limit is 0. Closed via #4194
#3444
- LimitOffsetPagination limit=0 fix. Closed via #4194
#3976
- Non-required serializer related fields. Closed as invalid#3541
- Adding support for multiple values for search filter. Closed#4013
- Allow DateTimeFields to accept strings as input. Closed via #4196
#4019
- DateTimeField to_representation can handle strings. Closed via #4196
#2813
- Contradictory read_only
and required
arguments on a m2m through field with uniqueness constraint. Closed via #4192#3944
- Preserve order on MultipleChoiceFields. Closed#4203
- Lazily get the name of hyperlinked models. Closed as invalid#4206
- Tutorial part 2, cannot bypass authentication. Closed as invalid#4212
- Overridable offset cutoff in CursorPagination. Accepted & merged#4213
- filter_fields
attribute for DjangoFilterBackend. Closed#3938
- Prevented unnecessary distinct() call in SearchFilter. Accepted & merged#4210
- Test against Django 1.10b1. Accepted & merged#3381
- Unique validator is executed and breaks if field is invalid. Closed via #4217
#3493
- Fix PostgreSQL fields DataError in unique validator. Closed via #4217
#3816
- Resolving APIs URL to different namespaces. Closed via #4219
#4009
- NamespaceVersioning fails for nested namespaces. Closed via #4219
#4010
- Nested NamespaceVersioning. Closed via #4219
#3820
- Fix parsing multipart data using a nested serializer with list. Accepted & merged#3710
- Test case for #3598. Closed via #3820
#4229
- Fix issues with routers for custom list-route and detail-routes. Accepted & merged#4228
- Dict attr fix. Closed as invalid#4230
- TemplateHTMLRenderer: assign the view to the template context. Closed#4158
- Django 1.10 support.#4159
- Reformat travis.yml and turn off email notifications.#4156
- More robust default behavior on OrderingFilter.#4160
- Don’t list many-to-many choices in OPTIONS requests.#4166
- Clean up existing deprecation warnings.
Commit 75751cc
- Allow relative URLs with HyperlinkedModelSerializer.#4169
- Update FileUploadParser docs.#4173
- Note on obtain_auth_token
and throttles/permissions.#4174
- Minor docs tweaks.#4180
- Empty cases of .validated_data and .errors as lists not dicts for ListSerializer.#4181
- More robust form rendering in the browsable API.#4191
- Handle bytestrings in JSON.#4192
- Exclude read_only=True
fields from unique_together validation & add docs.#4194
- In LimitOffsetPagination limit=0
should revert to default limit.#4195
- Add test confirming that required=False is valid on a relational field.#4196
- Pass through strings as-in with date/time fields.#4197
- Simplify TimeField passing through strings.#4198
- Always defer to explicit overrides.#4215
- Minor refactoring of must_call_distinct
#4217
- Robust uniqueness checks.#4218
- Resolve tests against Django master.#4219
- Namespace versioning with nested namespaces.A couple of documentation improvements in Django, regarding upgrades:
Django #6732
- Document resolving deprecation warnings before upgrade.
Django #6733
- Link to upgrade docs from release notes.
Various work on the Core API package, in preparation for its use in schema generation, and for its use as a command line API client, and a Python client library.
Design discussions with Marc Gibbons, in preparation for a new release of the “Django REST Swagger” package, alongside 3.4.0, and building on REST framework’s new schema generation capabilities.
I’ve put aside work on a site allowing users to manage their sponsorships until 3.4 is out the door, as I consider that the priority right now. If you want to make any changes, or wish to cancel, please email me at tom@tomchristie.com.
Against a baseline of £48,000/yr revenue (not salary) we’re now just two more basic tier sponsors away from reaching 50% sustainability.
If you’ve not yet done so, please do consider signing up as a sponsor.
Thanks to everyone for your support, very much looking forward to July’s 3.4 release, and getting the new client library support out.
— Tom Christie, 1st July, 2016.