#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.

Reply via email to