mirror of
https://github.com/django/django.git
synced 2025-10-29 08:36:09 +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:
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user