id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 27407 Model.delete(keep_parents=True) should preserve parent reverse relationships Simon Charette nobody "The `keep_parent` option of `Model.delete()` is [https://docs.djangoproject.com/en/1.10/ref/models/instances/#django.db.models.Model.delete documented to keep the parent model’s data] but actually only preserves the child-parent relationship and will discard the parent reverse relationships which can lead to unexpected data loss. {{{#!python class Place(models.Model): pass class Restaurant(Place): pass class Event(models.Model): location = models.ForeignKey(Place, related_name='events') >> restaurant = Restaurant.objects.create() >> place = restaurant.parent_ptr >> Events.objects.create(location=place) >> place.events.count() 1 >> restaurant.delete(keep_parents=True) >> place.events.count() 0 }}} I believe that users of the `keep_parents` option would expect relationships pointing to their ''kept'' parents to also be preserved as they were not deleted and following the `CASCADE` chain just doesn't make sense here. If this had been discovered during the 1.9.x life cycle this could have qualified for a potential data loss backport but I'm not sure what should be done at this point. The `keep_parents` option was added in 81c2d9f60b9206c1291e5b1c3c8686f24a7726e1 to fix the long standing #15579." Bug closed Database layer (models, ORM) 1.9 Normal fixed Ready for checkin 1 0 0 0 0 0