diff --git a/docs/intro/reusable-apps.txt b/docs/intro/reusable-apps.txt index 6c953a404384..c82a2b456e18 100644 --- a/docs/intro/reusable-apps.txt +++ b/docs/intro/reusable-apps.txt @@ -208,7 +208,7 @@ this. For a small app like polls, this process isn't too difficult. :caption: ``django-polls/pyproject.toml`` [build-system] - requires = ["setuptools>=69.3"] + requires = ["setuptools>=77.0.3"] build-backend = "setuptools.build_meta" [project] @@ -219,6 +219,7 @@ this. For a small app like polls, this process isn't too difficult. ] description = "A Django app to conduct web-based polls." readme = "README.rst" + license = "BSD-3-Clause" requires-python = ">= 3.12" authors = [ {name = "Your Name", email = "yourname@example.com"}, @@ -228,7 +229,6 @@ this. For a small app like polls, this process isn't too difficult. "Framework :: Django", "Framework :: Django :: X.Y", # Replace "X.Y" as appropriate "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt index aee10e55fc7c..f290970d2c3a 100644 --- a/docs/ref/models/querysets.txt +++ b/docs/ref/models/querysets.txt @@ -2506,6 +2506,21 @@ them, but it has a few caveats: * If updating a large number of columns in a large number of rows, the SQL generated can be very large. Avoid this by specifying a suitable ``batch_size``. +* When updating a large number of objects, be aware that ``bulk_update()`` + prepares all of the ``WHEN`` clauses for every object across all batches + before executing any queries. This can require more memory than expected. To + reduce memory usage, you can use an approach like this:: + + from itertools import islice + + batch_size = 100 + ids_iter = range(1000) + while ids := list(islice(ids_iter, batch_size)): + batch = Entry.objects.filter(ids__in=ids) + for entry in batch: + entry.headline = f"Updated headline {entry.pk}" + Entry.objects.bulk_update(batch, ["headline"], batch_size=batch_size) + * Updating fields defined on multi-table inheritance ancestors will incur an extra query per ancestor. * When an individual batch contains duplicates, only the first instance in that diff --git a/pyproject.toml b/pyproject.toml index 5b15d3711657..3fc10a0131f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=75.8.1"] +requires = ["setuptools>=77.0.3"] build-backend = "setuptools.build_meta" [project] @@ -16,13 +16,13 @@ authors = [ ] description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." readme = "README.rst" -license = {text = "BSD-3-Clause"} +license = "BSD-3-Clause" +license-files = ["LICENSE", "LICENSE.python"] classifiers = [ "Development Status :: 2 - Pre-Alpha", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3",