diff options
author | Chris Cahoon <chris.cahoon@gmail.com> | 2009-06-13 03:29:17 +0000 |
---|---|---|
committer | Chris Cahoon <chris.cahoon@gmail.com> | 2009-06-13 03:29:17 +0000 |
commit | 87c1b6cc23eb15567e1b03aaec30c5a6f4181239 (patch) | |
tree | 20ab5b5ed5150ea269d4ec6aea2b8b379ffdf04c | |
parent | 45e50c00d98ccc015ab7d85377a1272bb159edcb (diff) | |
download | django-87c1b6cc23eb15567e1b03aaec30c5a6f4181239.tar.gz |
Fixed #10733 -- Added a regression test for queries with multiple references to multiple foreign keys in only() clauses. Thanks to mrts for the report.
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/http-wsgi-improvements@10996 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r-- | tests/regressiontests/defer_regress/models.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/regressiontests/defer_regress/models.py b/tests/regressiontests/defer_regress/models.py index 11ce1557fe..da9822ab88 100644 --- a/tests/regressiontests/defer_regress/models.py +++ b/tests/regressiontests/defer_regress/models.py @@ -84,7 +84,8 @@ Some further checks for select_related() and inherited model behaviour (regression for #10710). >>> c1 = Child.objects.create(name="c1", value=42) ->>> obj = Leaf.objects.create(name="l1", child=c1) +>>> c2 = Child.objects.create(name="c2", value=37) +>>> obj = Leaf.objects.create(name="l1", child=c1, second_child=c2) >>> obj = Leaf.objects.only("name", "child").select_related()[0] >>> obj.child.name @@ -101,5 +102,24 @@ types as their non-deferred versions (bug #10738). >>> c1 is c2 is c3 True +# Regression for #10733 - only() can be used on a model with two foreign keys. +>>> results = Leaf.objects.all().only('name', 'child', 'second_child').select_related() +>>> results[0].child.name +u'c1' +>>> results[0].second_child.name +u'c2' + +>>> results = Leaf.objects.all().only('name', 'child', 'second_child', 'child__name', 'second_child__name').select_related() +>>> results[0].child.name +u'c1' +>>> results[0].second_child.name +u'c2' + +# Finally, we need to flush the app cache for the defer module. +# Using only/defer creates some artifical entries in the app cache +# that messes up later tests. Purge all entries, just to be sure. +>>> from django.db.models.loading import cache +>>> cache.app_models['defer_regress'] = {} + """ } |