#21961: ForeignKey.on_delete supports database-level cascading options
-------------------------------------+-------------------------------------
Reporter: Xof | Owner: nobody
Type: New feature | Status: new
Component: Database layer | Version:
(models, ORM) | 1.7-alpha-1
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by akaariai):
I think the description has parent and child deletion mixed. Deleting the
parent will delete the child (there is a key from child to parent). The
problem is child deletion. In Django deleting the child cascades to the
parent row, too. But there is no column from parent to child you can
cascade along if you do cascades in the DB. The real problematic case:
{{{
class Related(models.Model):
pass
class Parent(models.Model):
pass
class Child(Parent):
related = models.ForeignKey(Related, on_delete=DB_CASCADE)
}}}
When you delete Related instance, Child instances pointing to it will be
deleted by db cascade, but the parent instances will be left alone. If you
instead use standard CASCADE, then the parent instances will be deleted,
too. This is surprising behaviour. It can be documented, but erroring out
would be IMO better.
--
Ticket URL: <https://code.djangoproject.com/ticket/21961#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/061.e49c14f98af9bafd4d59fe822867db86%40djangoproject.com.
For more options, visit https://groups.google.com/groups/opt_out.