Go to file
Simon Charette 0701bb8e1f Fixed #33928 -- Avoided unnecessary queries when cascade updating.
Models that use SET, SET_NULL, and SET_DEFAULT as on_delete handler
don't have to fetch objects for the sole purpose of passing them back to
a follow up UPDATE query filtered by the retrieved objects primary key.

This was achieved by flagging SET handlers as _lazy_ and having the
collector logic defer object collections until the last minute. This
should ensure that the rare cases where custom on_delete handlers are
defined remain uncalled when when dealing with an empty collection of
instances.

This reduces the number queries required to apply SET handlers from
2 to 1 where the remaining UPDATE use the same predicate as the non
removed SELECT query.

In a lot of ways this is similar to the fast-delete optimization that
was added in #18676 but for updates this time. The conditions only
happen to be simpler in this case because SET handlers are always
terminal. They never cascade to more deletes that can be combined.

Thanks Renan GEHAN for the report.
2022-08-27 14:25:55 +02:00
.github Restricted permissions for GitHub tokens. 2022-08-04 20:00:35 +02:00
.tx Removed contrib-messages entry in Transifex config file 2016-06-29 21:11:30 +02:00
django Fixed #33928 -- Avoided unnecessary queries when cascade updating. 2022-08-27 14:25:55 +02:00
docs Refs #30511 -- Updated docs about auto-incrementing primary keys on PostgreSQL. 2022-08-26 21:42:44 +02:00
extras Refs #23433 -- Removed django-admin.py entry point per deprecation timeline. 2021-01-14 17:50:04 +01:00
js_tests Fixed #33637 -- Improved initial zoom level in MapWidget. 2022-04-14 11:50:31 +02:00
scripts Refs #33476 -- Reformatted code with Black. 2022-02-07 20:37:05 +01:00
tests Fixed #33928 -- Avoided unnecessary queries when cascade updating. 2022-08-27 14:25:55 +02:00
.editorconfig Refs #33476 -- Adjusted docs and config files for Black. 2022-02-07 20:36:04 +01:00
.eslintignore Refs #32165 -- Bumped minimum ESLint version to 7.16.0 to match pre-commit configuration. 2021-01-19 21:11:34 +01:00
.eslintrc Enabled ESLint's "eqeqeq" rule. 2020-05-18 07:42:51 +02:00
.git-blame-ignore-revs Ignored c18861804f formatting changes in git blame. 2022-07-31 09:24:39 +02:00
.gitattributes Fixed #19670 -- Applied CachedFilesMixin patterns to specific extensions 2016-03-30 14:34:41 +02:00
.gitignore Fixed #22446 -- Added tox.ini to automate pull request checks. 2016-07-20 14:06:28 -04:00
.pre-commit-config.yaml Fixed warnings per flake8 5.0.0. 2022-07-31 08:16:19 +02:00
.readthedocs.yml Configured Read The Docs to build all formats. 2021-11-18 12:21:00 +01:00
AUTHORS Fixed #33842 -- Used :source: role for links to repo files on GitHub. 2022-08-09 14:44:51 +02:00
CONTRIBUTING.rst Added link to the code of conduct from contributing guides. 2015-04-17 18:12:41 -04:00
Gruntfile.js Refs #31265 -- Updated .eslintignore to match eslint tests 2020-12-23 11:14:48 +01:00
INSTALL Fixed #32355 -- Dropped support for Python 3.6 and 3.7 2021-02-10 10:20:54 +01:00
LICENSE
LICENSE.python Updated Python license for 2022. 2022-01-12 11:21:51 +01:00
MANIFEST.in Fixed #31524 -- Removed minified static assets from the admin. 2020-05-14 16:07:56 +02:00
README.rst Fixed 32956 -- Lowercased spelling of "web" and "web framework" where appropriate. 2021-07-29 06:24:12 +02:00
package.json Bumped versions in pre-commit and npm configurations. 2022-06-28 08:53:05 +02:00
pyproject.toml Fixed #33778 -- Updated build-system configuration. 2022-08-15 11:31:33 +02:00
setup.cfg Updated asgiref dependency for 4.1 release series. 2022-06-16 12:13:15 +02:00
setup.py Refs #33476 -- Reformatted code with Black. 2022-02-07 20:37:05 +01:00
tox.ini Refs #33476 -- Adjusted docs and config files for Black. 2022-02-07 20:36:04 +01:00

README.rst

======
Django
======

Django is a high-level Python web framework that encourages rapid development
and clean, pragmatic design. Thanks for checking it out.

All documentation is in the "``docs``" directory and online at
https://docs.djangoproject.com/en/stable/. If you're just getting started,
here's how we recommend you read the docs:

* First, read ``docs/intro/install.txt`` for instructions on installing Django.

* Next, work through the tutorials in order (``docs/intro/tutorial01.txt``,
  ``docs/intro/tutorial02.txt``, etc.).

* If you want to set up an actual deployment server, read
  ``docs/howto/deployment/index.txt`` for instructions.

* You'll probably want to read through the topical guides (in ``docs/topics``)
  next; from there you can jump to the HOWTOs (in ``docs/howto``) for specific
  problems, and check out the reference (``docs/ref``) for gory details.

* See ``docs/README`` for instructions on building an HTML version of the docs.

Docs are updated rigorously. If you find any problems in the docs, or think
they should be clarified in any way, please take 30 seconds to fill out a
ticket here: https://code.djangoproject.com/newticket

To get more help:

* Join the ``#django`` channel on ``irc.libera.chat``. Lots of helpful people
  hang out there. See https://web.libera.chat if you're new to IRC.

* Join the django-users mailing list, or read the archives, at
  https://groups.google.com/group/django-users.

To contribute to Django:

* Check out https://docs.djangoproject.com/en/dev/internals/contributing/ for
  information about getting involved.

To run Django's test suite:

* Follow the instructions in the "Unit tests" section of
  ``docs/internals/contributing/writing-code/unit-tests.txt``, published online at
  https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests

Supporting the Development of Django
====================================

Django's development depends on your contributions. 

If you depend on Django, remember to support the Django Software Foundation: https://www.djangoproject.com/fundraising/