mirror of
https://github.com/django/django.git
synced 2024-12-25 02:26:12 +00:00
17c3997f68
The `remove()` and `clear()` methods of the related managers created by `ForeignKey`, `GenericForeignKey`, and `ManyToManyField` suffered from a number of issues. Some operations ran multiple data modifying queries without wrapping them in a transaction, and some operations didn't respect default filtering when it was present (i.e. when the default manager on the related model implemented a custom `get_queryset()`). Fixing the issues introduced some backward incompatible changes: - The implementation of `remove()` for `ForeignKey` related managers changed from a series of `Model.save()` calls to a single `QuerySet.update()` call. The change means that `pre_save` and `post_save` signals aren't called anymore. - The `remove()` and `clear()` methods for `GenericForeignKey` related managers now perform bulk delete so `Model.delete()` isn't called anymore. - The `remove()` and `clear()` methods for `ManyToManyField` related managers perform nested queries when filtering is involved, which may or may not be an issue depending on the database and the data itself. Refs. #3871, #21174. Thanks Anssi Kääriäinen and Tim Graham for the reviews. |
||
---|---|---|
.. | ||
class-based-views | ||
contrib | ||
files | ||
forms | ||
models | ||
templates | ||
clickjacking.txt | ||
databases.txt | ||
django-admin.txt | ||
exceptions.txt | ||
index.txt | ||
middleware.txt | ||
request-response.txt | ||
settings.txt | ||
signals.txt | ||
template-response.txt | ||
unicode.txt | ||
urlresolvers.txt | ||
urls.txt | ||
utils.txt | ||
validators.txt | ||
views.txt |