Changeset 7782
- Timestamp:
- 06/29/08 04:40:17 (2 months ago)
- Files:
-
- django/trunk/django/db/models/query.py (modified) (2 diffs)
- django/trunk/django/db/models/query_utils.py (modified) (1 diff)
- django/trunk/django/db/models/sql/query.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/query.py
r7766 r7782 4 4 from django.db import connection, transaction, IntegrityError 5 5 from django.db.models.fields import DateField, FieldDoesNotExist 6 from django.db.models.query_utils import Q 6 from django.db.models.query_utils import Q, select_related_descend 7 7 from django.db.models import signals, sql 8 8 from django.dispatch import dispatcher … … 762 762 obj = klass(*row[index_start:index_end]) 763 763 for f in klass._meta.fields: 764 if (not f.rel or (not restricted and f.null) or 765 (restricted and f.name not in requested) or f.rel.parent_link): 764 if not select_related_descend(f, restricted, requested): 766 765 continue 767 766 if restricted: django/trunk/django/db/models/query_utils.py
r7477 r7782 49 49 return obj 50 50 51 def select_related_descend(field, restricted, requested): 52 """ 53 Returns True if this field should be used to descend deeper for 54 select_related() purposes. Used by both the query construction code 55 (sql.query.fill_related_selections()) and the model instance creation code 56 (query.get_cached_row()). 57 """ 58 if not field.rel: 59 return False 60 if field.rel.parent_link: 61 return False 62 if restricted and field.name not in requested: 63 return False 64 if not restricted and field.null: 65 return False 66 return True 67 django/trunk/django/db/models/sql/query.py
r7781 r7782 16 16 from django.db import connection 17 17 from django.db.models import signals 18 from django.db.models.fields import FieldDoesNotExist 19 from django.db.models.query_utils import select_related_descend 18 20 from django.db.models.sql.where import WhereNode, EverythingNode, AND, OR 19 21 from django.db.models.sql.datastructures import Count 20 from django.db.models.fields import FieldDoesNotExist21 22 from django.core.exceptions import FieldError 22 23 from datastructures import EmptyResultSet, Empty, MultiJoin … … 916 917 917 918 for f, model in opts.get_fields_with_model(): 918 if (not f.rel or (restricted and f.name not in requested) or 919 (not restricted and f.null) or f.rel.parent_link): 919 if not select_related_descend(f, restricted, requested): 920 920 continue 921 921 dupe_set = orig_dupe_set.copy()
