Merge fixes

This commit is contained in:
Ross Lawley 2013-04-17 14:27:33 +00:00
parent 51e50bf0a9
commit 420376d036
3 changed files with 22 additions and 10 deletions

View File

@ -30,7 +30,7 @@ class BaseDocument(object):
_dynamic_lock = True
_initialised = False
def __init__(self, __auto_convert=True, *args, **values):
def __init__(self, *args, **values):
"""
Initialise a document or embedded document
@ -46,7 +46,7 @@ class BaseDocument(object):
if name in values:
raise TypeError("Multiple values for keyword argument '" + name + "'")
values[name] = value
__auto_convert = values.pop("__auto_convert", True)
signals.pre_init.send(self.__class__, document=self, values=values)
self._data = {}

View File

@ -1138,8 +1138,13 @@ class QuerySet(object):
if self._hint != -1:
self._cursor_obj.hint(self._hint)
return self._cursor_obj
def __deepcopy__(self, memo):
"""Essential for chained queries with ReferenceFields involved"""
return self.clone()
@property
def _query(self):
if self._mongo_query is None:
@ -1302,6 +1307,9 @@ class QuerySet(object):
except:
pass
key_list.append((key, direction))
if self._cursor_obj:
self._cursor_obj.sort(key_list)
return key_list
def _get_scalar(self, doc):

View File

@ -249,6 +249,10 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(list(A.objects.none()), [])
self.assertEqual(list(A.objects.none().all()), [])
def test_chaining(self):
class A(Document):
s = StringField()
class B(Document):
ref = ReferenceField(A)
boolfield = BooleanField(default=False)
@ -1475,7 +1479,6 @@ class QuerySetTest(unittest.TestCase):
BlogPost.drop_collection()
def test_set_list_embedded_documents(self):
class Author(EmbeddedDocument):
@ -1604,6 +1607,7 @@ class QuerySetTest(unittest.TestCase):
qs = self.Person.objects.all().limit(10)
qs = qs.order_by('-age')
ages = [p.age for p in qs]
self.assertEqual(ages, [40, 30, 20])