{{{#!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.
--
Ticket URL: <https://code.djangoproject.com/ticket/27407>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* stage: Unreviewed => Accepted
Comment:
1.9.x still qualifies for data loss fixes, though I'm not sure it's
critical since no one noticed it until now. Fine with me for at least
1.10.x.
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:1>
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:2>
* has_patch: 0 => 1
* version: master => 1.9
Comment:
[https://github.com/django/django/pull/7557 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:3>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:4>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"31a56e30cfb3c8e1a9373e5abdd12b5b23d5d910" 31a56e30]:
{{{
#!CommitTicketReference repository=""
revision="31a56e30cfb3c8e1a9373e5abdd12b5b23d5d910"
Fixed #27407 -- Made Model.delete(keep_parents=True) preserve parent
reverse relationships.
Thanks Tim for the review.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:5>
Comment (by Simon Charette <charette.s@…>):
In [changeset:"b495d8e334c2487eef6282bac5dd0c1f43da71ef" b495d8e3]:
{{{
#!CommitTicketReference repository=""
revision="b495d8e334c2487eef6282bac5dd0c1f43da71ef"
[1.10.x] Fixed #27407 -- Made Model.delete(keep_parents=True) preserve
parent reverse relationships.
Thanks Tim for the review.
Backport of 31a56e30cfb3c8e1a9373e5abdd12b5b23d5d910 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/27407#comment:6>