Fixed #14043 -- Made sure nullable o2o delete works as expected

There was an old complaint about nullable one-to-one field cascading
even when the o2o field was saved to None value before the deletion.
Added an test to verify this doesn't happen.

Also some PEP 8 cleanup.
This commit is contained in:
Anssi Kääriäinen 2013-08-20 09:47:43 +03:00
parent e55ca60903
commit b53ed351b3
1 changed files with 21 additions and 13 deletions

View File

@ -114,7 +114,7 @@ class OneToOneRegressionTests(TestCase):
misbehaving. We test both (primary_key=True & False) cases here to misbehaving. We test both (primary_key=True & False) cases here to
prevent any reappearance of the problem. prevent any reappearance of the problem.
""" """
t = Target.objects.create() Target.objects.create()
self.assertQuerysetEqual( self.assertQuerysetEqual(
Target.objects.filter(pointer=None), Target.objects.filter(pointer=None),
@ -235,3 +235,11 @@ class OneToOneRegressionTests(TestCase):
b = UndergroundBar.objects.create() b = UndergroundBar.objects.create()
with self.assertNumQueries(0), self.assertRaises(ValueError): with self.assertNumQueries(0), self.assertRaises(ValueError):
p.undergroundbar = b p.undergroundbar = b
def test_nullable_o2o_delete(self):
u = UndergroundBar.objects.create(place=self.p1)
u.place_id = None
u.save()
self.p1.delete()
self.assertTrue(UndergroundBar.objects.filter(pk=u.pk).exists())
self.assertIsNone(UndergroundBar.objects.get(pk=u.pk).place)