diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/queries/models.py | 18 | ||||
| -rw-r--r-- | tests/regressiontests/select_related_regress/models.py | 25 |
2 files changed, 41 insertions, 2 deletions
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 06c0ebf6e9..88d08b0bd1 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -16,10 +16,17 @@ try: except NameError: from django.utils.itercompat import sorted +class DumbCategory(models.Model): + pass + +class NamedCategory(DumbCategory): + name = models.CharField(max_length=10) + class Tag(models.Model): name = models.CharField(max_length=10) parent = models.ForeignKey('self', blank=True, null=True, related_name='children') + category = models.ForeignKey(NamedCategory, null=True, default=None) class Meta: ordering = ['name'] @@ -266,8 +273,9 @@ class Plaything(models.Model): __test__ = {'API_TESTS':""" ->>> t1 = Tag.objects.create(name='t1') ->>> t2 = Tag.objects.create(name='t2', parent=t1) +>>> generic = NamedCategory.objects.create(name="Generic") +>>> t1 = Tag.objects.create(name='t1', category=generic) +>>> t2 = Tag.objects.create(name='t2', parent=t1, category=generic) >>> t3 = Tag.objects.create(name='t3', parent=t1) >>> t4 = Tag.objects.create(name='t4', parent=t3) >>> t5 = Tag.objects.create(name='t5', parent=t3) @@ -726,6 +734,12 @@ Bug #6981 >>> Tag.objects.select_related('parent').order_by('name') [<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>] +Bug #9926 +>>> Tag.objects.select_related("parent", "category").order_by('name') +[<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>] +>>> Tag.objects.select_related('parent', "parent__category").order_by('name') +[<Tag: t1>, <Tag: t2>, <Tag: t3>, <Tag: t4>, <Tag: t5>] + Bug #6180, #6203 -- dates with limits and/or counts >>> Item.objects.count() 4 diff --git a/tests/regressiontests/select_related_regress/models.py b/tests/regressiontests/select_related_regress/models.py index eca620ccf7..b2664f9398 100644 --- a/tests/regressiontests/select_related_regress/models.py +++ b/tests/regressiontests/select_related_regress/models.py @@ -65,6 +65,23 @@ class Client(models.Model): state = models.ForeignKey(State, null=True) status = models.ForeignKey(ClientStatus) +# Some model inheritance exercises +class Parent(models.Model): + name = models.CharField(max_length=10) + + def __unicode__(self): + return self.name + +class Child(Parent): + value = models.IntegerField() + +class Item(models.Model): + name = models.CharField(max_length=10) + child = models.ForeignKey(Child, null=True) + + def __unicode__(self): + return self.name + __test__ = {'API_TESTS': """ Regression test for bug #7110. When using select_related(), we must query the Device and Building tables using two different aliases (each) in order to @@ -140,4 +157,12 @@ for country before getting status. <ClientStatus: ClientStatus object> >>> Client.objects.select_related('status')[0].status <ClientStatus: ClientStatus object> + +Exercising select_related() with multi-table model inheritance. +>>> c1 = Child.objects.create(name="child1", value=42) +>>> _ = Item.objects.create(name="item1", child=c1) +>>> _ = Item.objects.create(name="item2") +>>> Item.objects.select_related("child").order_by("name") +[<Item: item1>, <Item: item2>] + """} |
