mirror of
https://github.com/django/django.git
synced 2025-09-26 12:09:19 +00:00
Fixed #8036 -- Fixed a case when attempting to traverse non-existent related
instances. We weren't skipping the correct output columns before processing subsequent existing related instances. Thanks to mrmachine for the test case. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8598 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6056ab1bee
commit
8f5234d801
2 changed files with 45 additions and 3 deletions
|
@ -794,8 +794,9 @@ def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0,
|
|||
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)
|
||||
obj = None
|
||||
else:
|
||||
obj = klass(*fields)
|
||||
for f in klass._meta.fields:
|
||||
if not select_related_descend(f, restricted, requested):
|
||||
continue
|
||||
|
@ -807,7 +808,8 @@ def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0,
|
|||
cur_depth+1, next)
|
||||
if cached_row:
|
||||
rel_obj, index_end = cached_row
|
||||
setattr(obj, f.get_cache_name(), rel_obj)
|
||||
if obj is not None:
|
||||
setattr(obj, f.get_cache_name(), rel_obj)
|
||||
return obj, index_end
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue