diff options
Diffstat (limited to 'django/db/models/query_utils.py')
| -rw-r--r-- | django/db/models/query_utils.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/django/db/models/query_utils.py b/django/db/models/query_utils.py index 0ce7900c74..8dbb1ec667 100644 --- a/django/db/models/query_utils.py +++ b/django/db/models/query_utils.py @@ -48,3 +48,20 @@ class Q(tree.Node): obj.negate() return obj +def select_related_descend(field, restricted, requested): + """ + Returns True if this field should be used to descend deeper for + select_related() purposes. Used by both the query construction code + (sql.query.fill_related_selections()) and the model instance creation code + (query.get_cached_row()). + """ + if not field.rel: + return False + if field.rel.parent_link: + return False + if restricted and field.name not in requested: + return False + if not restricted and field.null: + return False + return True + |
