Properly fixed indexing on _id for covered indexes

refs  #4
This commit is contained in:
Ross Lawley 2012-05-01 12:02:45 +01:00
parent dbe2f5f2b8
commit 5bcbb4fdaa

View File

@ -504,9 +504,12 @@ class QuerySet(object):
# Use real field name, do it manually because we need field # Use real field name, do it manually because we need field
# objects for the next part (list field checking) # objects for the next part (list field checking)
parts = key.split('.') parts = key.split('.')
fields = QuerySet._lookup_field(doc_cls, parts) if parts in (['pk'], ['id'], ['_id']):
parts = [field if field == '_id' else field.db_field for field in fields] key = '_id'
key = '.'.join(parts) else:
fields = QuerySet._lookup_field(doc_cls, parts)
parts = [field if field == '_id' else field.db_field for field in fields]
key = '.'.join(parts)
index_list.append((key, direction)) index_list.append((key, direction))
# Check if a list field is being used, don't use _types if it is # Check if a list field is being used, don't use _types if it is
@ -614,11 +617,10 @@ class QuerySet(object):
continue continue
if field is None: if field is None:
# Look up first field from the document # Look up first field from the document
if field_name in ('pk', 'id', '_id'): if field_name == 'pk':
# Deal with "primary key" alias # Deal with "primary key" alias
field_name = document._meta['id_field'] or '_id' field_name = document._meta['id_field']
field = "_id" if field_name in document._fields:
elif field_name in document._fields:
field = document._fields[field_name] field = document._fields[field_name]
elif document._dynamic: elif document._dynamic:
from base import BaseDynamicField from base import BaseDynamicField