diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/queries/models.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 67f2cc098d..22fa4f7803 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -97,6 +97,20 @@ class X(models.Model): class Y(models.Model): x1 = models.ForeignKey(X, related_name='y1') +# Some models with a cycle in the default ordering. This would be bad if we +# didn't catch the infinite loop. +class LoopX(models.Model): + y = models.ForeignKey('LoopY') + + class Meta: + ordering = ['y'] + +class LoopY(models.Model): + x = models.ForeignKey(LoopX) + + class Meta: + ordering = ['x'] + __test__ = {'API_TESTS':""" >>> t1 = Tag(name='t1') >>> t1.save() @@ -373,6 +387,13 @@ Bug #2076 >>> Cover.objects.all() [<Cover: first>, <Cover: second>] +# If you're not careful, it's possible to introduce infinite loops via default +# ordering on foreign keys in a cycle. We detect that. +>>> LoopX.objects.all() +Traceback (most recent call last): +... +TypeError: Infinite loop caused by ordering. + # If the remote model does not have a default ordering, we order by its 'id' # field. >>> Item.objects.order_by('creator', 'name') |
