djangodocs.org

728 sections in Django 5.2 Search all versions →

Models

Release notes Django 3.2 release notes What’s new in Django 3.2Minor features

The new no_key parameter for QuerySet.select_for_update(), supported on PostgreSQL, allows acquiring weaker locks that don’t block the creation of rows that reference locked rows through a foreign key. When() expression now allows using the condition argument with lookups.

Models

Release notes Django 5.0 release notes What’s new in Django 5.0Minor features

The new create_defaults argument of QuerySet.update_or_create() and QuerySet.aupdate_or_create() methods allows specifying a different field values for the create operation. The new violation_error_code attribute of BaseConstraint, CheckConstraint, and UniqueConstraint allows customizing the code of ValidationError raised during model validation.

Models

Release notes Django 5.2 release notes What’s new in Django 5.2Minor features

The SELECT clause generated when using QuerySet.values() and QuerySet.values_list() now matches the specified order of the referenced expressions. Previously, the order was based on a set of counterintuitive rules which made query combination through methods such as QuerySet.union() unpredictable.

Bugfixes

Release notes Django 5.2.6 release notes

Fixed a bug where using QuerySet.values() or values_list() with a ForeignObject composed of multiple fields returned incorrect results instead of tuples of the referenced fields (#36431).

Database backends

Release notes Django 1.11 release notes What’s new in Django 1.11Minor features

Added the skip_locked argument to QuerySet.select_for_update() on PostgreSQL 9.5+ and Oracle to execute queries with FOR UPDATE SKIP LOCKED. Added the TEST['TEMPLATE'] setting to let PostgreSQL users specify a template for creating the test database.

Models

Release notes Django 1.11 release notes What’s new in Django 1.11Minor features

Added support for callable values in the defaults argument of QuerySet.update_or_create() and get_or_create(). ImageField now has a default validate_image_file_extension validator. (This validator moved to the form field in Django 1.11.2.) Added support for time truncation to Trunc functions.

Release notes Django 1.11 release notes Backwards incompatible changes in 1.11

The change to make QuerySet.iterator() use server-side cursors on PostgreSQL prevents running Django with PgBouncer in transaction pooling mode. To reallow that, use the DISABLE_SERVER_SIDE_CURSORS setting (added in Django 1.11.1) in DATABASES.

Release notes Django 1.4 release notes What’s new in Django 1.4

Django 1.4 includes a QuerySet.select_for_update() method, which generates a SELECT ... FOR UPDATE SQL query. This will lock rows until the end of the transaction, meaning other transactions cannot modify or delete rows matched by a FOR UPDATE query.

Bugfixes

Release notes Django 1.5.2 release notes

Fixed a crash with prefetch_related() (#19607) as well as some pickle regressions with prefetch_related (#20157 and #20257). Fixed a regression in django.contrib.gis in the Google Map output on Python 3 (#20773).

Bugfixes

Release notes Django 2.2.4 release notes

Fixed a regression in Django 2.2 when ordering a QuerySet.union(), intersection(), or difference() by a field type present more than once results in the wrong ordering being used (#30628).

Release notes Django 1.11.1 release notes

The change in Django 1.11 to make QuerySet.iterator() use server-side cursors on PostgreSQL prevents running Django with PgBouncer in transaction pooling mode. To reallow that, use the DISABLE_SERVER_SIDE_CURSORS setting in DATABASES. See Transaction pooling and server-side cursors for more discussion.

Bugfixes

Release notes Django 1.11.25 release notes

Fixed a crash when filtering with a Subquery() annotation of a queryset containing django.contrib.postgres.fields.JSONField or HStoreField (#30769).

Miscellaneous

Release notes Django 1.5 release notes Backwards incompatible changes in 1.5

django.forms.ModelMultipleChoiceField now returns an empty QuerySet as the empty value instead of an empty list. int_to_base36() properly raises a TypeError instead of ValueError for non-integer inputs. The slugify template filter is now available as a standard Python function at django.utils.text.slugify().