Fixed #30191 -- Selected only referenced fields during cascade deletion.

The non-referenced fields can only be deferred if no deletion signals
receivers are connected for their respective model as connected as these
receivers might expect all fields of the deleted model to be present.

Thanks Ed Morley for the report.
This commit is contained in:
Simon Charette 2019-02-19 01:33:28 -05:00 committed by Mariusz Felisiak
parent 26c4be2ebe
commit f110de5c04
No known key found for this signature in database
GPG key ID: 2EF56372BA48CD1B
3 changed files with 77 additions and 5 deletions

View file

@ -126,3 +126,20 @@ class Base(models.Model):
class RelToBase(models.Model):
base = models.ForeignKey(Base, models.DO_NOTHING)
class Origin(models.Model):
pass
class Referrer(models.Model):
origin = models.ForeignKey(Origin, models.CASCADE)
unique_field = models.IntegerField(unique=True)
large_field = models.TextField()
class SecondReferrer(models.Model):
referrer = models.ForeignKey(Referrer, models.CASCADE)
other_referrer = models.ForeignKey(
Referrer, models.CASCADE, to_field='unique_field', related_name='+'
)