Skip to content

Commit 7ce8903

Browse files
committed
[soc2010/query-refactor] Implement querying, thereby providing that update wasn't working (not fixed yet).
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13341 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent fe2bd63 commit 7ce8903

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

django/contrib/mongodb/compiler.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ def build_query(self):
4545
filters = self.get_filters(self.query.where)
4646
return self.connection.db[self.query.model._meta.db_table].find(filters)
4747

48+
def results_iter(self):
49+
query = self.build_query()
50+
for row in query:
51+
yield tuple(
52+
row[f.column if f is not self.query.model._meta.pk else "_id"]
53+
for f in self.query.model._meta.fields
54+
)
55+
4856
def has_results(self):
4957
try:
5058
self.build_query()[0]
@@ -62,4 +70,9 @@ def insert(self, return_id=False):
6270
])
6371
if self.query.model._meta.pk.column in values:
6472
values["_id"] = values.pop(self.query.model._meta.pk.column)
73+
if "_id" in values and not values["_id"]:
74+
del values["_id"]
6575
return self.connection.db[self.query.model._meta.db_table].insert(values)
76+
77+
class SQLUpdateCompiler(SQLCompiler):
78+
pass

tests/regressiontests/mongodb/tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ def test_create(self):
99
self.assertTrue(b.pk is not None)
1010
self.assertEqual(b.name, "Bruce Springsteen")
1111
self.assertTrue(b.good)
12+
b2 = Artist.objects.get(pk=b.pk)
13+
self.assertEqual(b.pk, b2.pk)
14+
self.assertEqual(b.name, b2.name)
15+
self.assertEqual(b.good, b2.good)
1216

1317
def test_update(self):
1418
l = Artist.objects.create(name="Lady Gaga", good=True)
@@ -18,3 +22,6 @@ def test_update(self):
1822
l.good = False
1923
l.save()
2024
self.assertEqual(l.pk, pk)
25+
26+
l = Artist.objects.get(pk=pk)
27+
self.assertTrue(not l.good)

0 commit comments

Comments
 (0)