def test_cycle(self):
# Simple cycle
a = Place.objects.create(name='a')
a.parent = a
with self.assertRaisesMessage(
InternalError, 'Cannot set itself or a descendant as parent.'):
with transaction.atomic():
with self.assertNumQueries(1):
a.save()
# Complex cycle
b = Place.objects.create(name='b', parent=a)
c = Place.objects.create(name='c', parent=b)
d = Place.objects.create(name='d', parent=c)
a.parent = d
with self.assertRaisesMessage(
InternalError, 'Cannot set itself or a descendant as parent.'):
with transaction.atomic():
with self.assertNumQueries(1):
a.save()
评论列表
文章目录