mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fix #17876: Corrected an exception (regression) raised where select_realted and only is used on a proxy model. Thanks milosu and charettes.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17692 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -1266,7 +1266,7 @@ def get_klass_info(klass, max_depth=0, cur_depth=0, requested=None, | ||||
|         return None | ||||
|  | ||||
|     if only_load: | ||||
|         load_fields = only_load.get(klass) | ||||
|         load_fields = only_load.get(klass) or set() | ||||
|         # When we create the object, we will also be creating populating | ||||
|         # all the parent classes, so traverse the parent classes looking | ||||
|         # for fields that must be included on load. | ||||
|   | ||||
| @@ -22,3 +22,7 @@ class Child(Primary): | ||||
|  | ||||
| class BigChild(Primary): | ||||
|     other = models.CharField(max_length=50) | ||||
|  | ||||
| class ChildProxy(Child): | ||||
|     class Meta: | ||||
|         proxy=True | ||||
|   | ||||
| @@ -3,7 +3,7 @@ from __future__ import absolute_import | ||||
| from django.db.models.query_utils import DeferredAttribute | ||||
| from django.test import TestCase | ||||
|  | ||||
| from .models import Secondary, Primary, Child, BigChild | ||||
| from .models import Secondary, Primary, Child, BigChild, ChildProxy | ||||
|  | ||||
|  | ||||
| class DeferTests(TestCase): | ||||
| @@ -145,3 +145,7 @@ class DeferTests(TestCase): | ||||
|         obj.name = "bb" | ||||
|         obj.save() | ||||
|  | ||||
|     def test_defer_proxy(self): | ||||
|         # using select related and only should not result in Exception | ||||
|         for obj in ChildProxy.objects.all().select_related().only('id'): | ||||
|             continue | ||||
|   | ||||
		Reference in New Issue
	
	Block a user