diff --git a/django/db/models/query.py b/django/db/models/query.py
index 0f3a79a..4478c2a 100644
a
|
b
|
class QuerySet(object):
|
302 | 302 | if fill_cache: |
303 | 303 | klass_info = get_klass_info(model, max_depth=max_depth, |
304 | 304 | requested=requested, only_load=only_load) |
305 | | for row in compiler.results_iter(): |
306 | | if fill_cache: |
307 | | obj, _ = get_cached_row(row, index_start, db, klass_info, |
308 | | offset=len(aggregate_select)) |
309 | | else: |
310 | | # Omit aggregates in object creation. |
311 | | row_data = row[index_start:aggregate_start] |
312 | | if skip: |
313 | | obj = model_cls(**dict(zip(init_list, row_data))) |
| 305 | try: |
| 306 | for row in compiler.results_iter(): |
| 307 | if fill_cache: |
| 308 | obj, _ = get_cached_row(row, index_start, db, klass_info, |
| 309 | offset=len(aggregate_select)) |
314 | 310 | else: |
315 | | obj = model(*row_data) |
316 | | |
317 | | # Store the source database of the object |
318 | | obj._state.db = db |
319 | | # This object came from the database; it's not being added. |
320 | | obj._state.adding = False |
321 | | |
322 | | if extra_select: |
323 | | for i, k in enumerate(extra_select): |
324 | | setattr(obj, k, row[i]) |
325 | | |
326 | | # Add the aggregates to the model |
327 | | if aggregate_select: |
328 | | for i, aggregate in enumerate(aggregate_select): |
329 | | setattr(obj, aggregate, row[i + aggregate_start]) |
330 | | |
331 | | # Add the known related objects to the model, if there are any |
332 | | if self._known_related_objects: |
333 | | for field, rel_objs in self._known_related_objects.items(): |
334 | | pk = getattr(obj, field.get_attname()) |
335 | | try: |
336 | | rel_obj = rel_objs[pk] |
337 | | except KeyError: |
338 | | pass # may happen in qs1 | qs2 scenarios |
| 311 | # Omit aggregates in object creation. |
| 312 | row_data = row[index_start:aggregate_start] |
| 313 | if skip: |
| 314 | obj = model_cls(**dict(zip(init_list, row_data))) |
339 | 315 | else: |
340 | | setattr(obj, field.name, rel_obj) |
341 | | |
342 | | yield obj |
| 316 | obj = model(*row_data) |
| 317 | |
| 318 | # Store the source database of the object |
| 319 | obj._state.db = db |
| 320 | # This object came from the database; it's not being added. |
| 321 | obj._state.adding = False |
| 322 | |
| 323 | if extra_select: |
| 324 | for i, k in enumerate(extra_select): |
| 325 | setattr(obj, k, row[i]) |
| 326 | |
| 327 | # Add the aggregates to the model |
| 328 | if aggregate_select: |
| 329 | for i, aggregate in enumerate(aggregate_select): |
| 330 | setattr(obj, aggregate, row[i + aggregate_start]) |
| 331 | |
| 332 | # Add the known related objects to the model, if there are any |
| 333 | if self._known_related_objects: |
| 334 | for field, rel_objs in self._known_related_objects.items(): |
| 335 | pk = getattr(obj, field.get_attname()) |
| 336 | try: |
| 337 | rel_obj = rel_objs[pk] |
| 338 | except KeyError: |
| 339 | pass # may happen in qs1 | qs2 scenarios |
| 340 | else: |
| 341 | setattr(obj, field.name, rel_obj) |
| 342 | |
| 343 | yield obj |
| 344 | except Exception: |
| 345 | self._result_cache = None |
| 346 | raise |
343 | 347 | |
344 | 348 | def aggregate(self, *args, **kwargs): |
345 | 349 | """ |