mirror of
https://github.com/django/django.git
synced 2025-10-24 22:26:08 +00:00
Fixed #17918 - Handle proxy models correctly when sorting deletions for databases without deferred constraints. Thanks Nate Bragg for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17756 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -8,7 +8,7 @@ from django.test import TestCase, TransactionTestCase, skipUnlessDBFeature
|
||||
|
||||
from .models import (Book, Award, AwardNote, Person, Child, Toy, PlayedWith,
|
||||
PlayedWithNote, Email, Researcher, Food, Eaten, Policy, Version, Location,
|
||||
Item, Image, File, Photo, FooFile, FooImage, FooPhoto)
|
||||
Item, Image, File, Photo, FooFile, FooImage, FooPhoto, FooFileProxy)
|
||||
|
||||
|
||||
# Can't run this test under SQLite, because you can't
|
||||
@@ -237,3 +237,24 @@ class ProxyDeleteTest(TestCase):
|
||||
# to it.
|
||||
self.assertEqual(len(FooFile.objects.all()), 0)
|
||||
self.assertEqual(len(FooImage.objects.all()), 0)
|
||||
|
||||
|
||||
def test_delete_proxy_pair(self):
|
||||
"""
|
||||
If a pair of proxy models are linked by an FK from one concrete parent
|
||||
to the other, deleting one proxy model cascade-deletes the other, and
|
||||
the deletion happens in the right order (not triggering an
|
||||
IntegrityError on databases unable to defer integrity checks).
|
||||
|
||||
Refs #17918.
|
||||
|
||||
"""
|
||||
# Create an Image (proxy of File) and FooFileProxy (proxy of FooFile,
|
||||
# which has an FK to File)
|
||||
image = Image.objects.create()
|
||||
as_file = File.objects.get(pk=image.pk)
|
||||
FooFileProxy.objects.create(my_file=as_file)
|
||||
|
||||
Image.objects.all().delete()
|
||||
|
||||
self.assertEqual(len(FooFileProxy.objects.all()), 0)
|
||||
|
||||
Reference in New Issue
Block a user