mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	related object, populate the attribute correctly. Patch from Bastien Kleineidam. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8098 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -785,7 +785,11 @@ def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0, | |||||||
|  |  | ||||||
|     restricted = requested is not None |     restricted = requested is not None | ||||||
|     index_end = index_start + len(klass._meta.fields) |     index_end = index_start + len(klass._meta.fields) | ||||||
|     obj = klass(*row[index_start:index_end]) |     fields = row[index_start:index_end] | ||||||
|  |     if not [x for x in fields if x is not None]: | ||||||
|  |         # If we only have a list of Nones, there was not related object. | ||||||
|  |         return None, index_end | ||||||
|  |     obj = klass(*fields) | ||||||
|     for f in klass._meta.fields: |     for f in klass._meta.fields: | ||||||
|         if not select_related_descend(f, restricted, requested): |         if not select_related_descend(f, restricted, requested): | ||||||
|             continue |             continue | ||||||
|   | |||||||
| @@ -1,8 +1,5 @@ | |||||||
| """ | """ | ||||||
| Regression tests for proper working of ForeignKey(null=True). Tests these bugs: | Regression tests for proper working of ForeignKey(null=True). | ||||||
|  |  | ||||||
|     * #7369: FK non-null after null relationship on select_related() generates an invalid query |  | ||||||
|  |  | ||||||
| """ | """ | ||||||
|  |  | ||||||
| from django.db import models | from django.db import models | ||||||
| @@ -38,7 +35,8 @@ __test__ = {'API_TESTS':""" | |||||||
|  |  | ||||||
| # Starting from comment, make sure that a .select_related(...) with a specified | # Starting from comment, make sure that a .select_related(...) with a specified | ||||||
| # set of fields will properly LEFT JOIN multiple levels of NULLs (and the things | # set of fields will properly LEFT JOIN multiple levels of NULLs (and the things | ||||||
| # that come after the NULLs, or else data that should exist won't). | # that come after the NULLs, or else data that should exist won't). Regression | ||||||
|  | # test for #7369. | ||||||
| >>> c = Comment.objects.select_related().get(id=1) | >>> c = Comment.objects.select_related().get(id=1) | ||||||
| >>> c.post | >>> c.post | ||||||
| <Post: First Post> | <Post: First Post> | ||||||
| @@ -47,9 +45,11 @@ __test__ = {'API_TESTS':""" | |||||||
| None | None | ||||||
|  |  | ||||||
| >>> comments = Comment.objects.select_related('post__forum__system_info').all() | >>> comments = Comment.objects.select_related('post__forum__system_info').all() | ||||||
| >>> [(c.id, c.post.id) for c in comments] | >>> [(c.id, c.comment_text, c.post) for c in comments] | ||||||
| [(1, 1), (2, None)] | [(1, u'My first comment', <Post: First Post>), (2, u'My second comment', None)] | ||||||
| >>> [(c.comment_text, c.post.title) for c in comments] |  | ||||||
| [(u'My first comment', u'First Post'), (u'My second comment', None)] | # Regression test for #7530, #7716. | ||||||
|  | >>> Comment.objects.select_related('post').filter(post__isnull=True)[0].post is None | ||||||
|  | True | ||||||
|  |  | ||||||
| """} | """} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user