mirror of
https://github.com/django/django.git
synced 2025-11-03 13:23:19 +00:00
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 | ||