Hello,
Consider this set of models:
class Artist(models.Model):
name = models.CharField(max_length=10)
class Album(models.Model):
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
class Song(models.Model):
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
album = models.ForeignKey(Album, on_delete=models.PROTECT)
And the following test:
class TestDeletion(TestCase):
def test_delete(self):
artist = Artist.objects.create(name='test')
album = Album.objects.create(artist=artist)
Song.objects.create(artist=artist, album=album)
artist.delete()
What is the expected result of the test?
Currently,
this test fails with ProtectedError raised, because trying to delete
the artist results in trying to delete the album, which is protected
because of the related song. But, the related song was going to be
deleted anyway, via the cascading relationship to the artist itself. So I
believe that in this case, deletion should succeed.
If there's agreement that the current behavior is a bug, I'll open a ticket with a proper test case and work on a fix.
Thanks,
--
Daniel Izquierdo