Skip to content

Commit 28499bb

Browse files
committed
[soc2010/query-refactor] Fixed update on MongoDB.
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13342 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent 7ce8903 commit 28499bb

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

django/contrib/mongodb/compiler.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,13 @@ def insert(self, return_id=False):
7575
return self.connection.db[self.query.model._meta.db_table].insert(values)
7676

7777
class SQLUpdateCompiler(SQLCompiler):
78-
pass
78+
def update(self, result_type):
79+
# TODO: more asserts
80+
filters = self.get_filters(self.query.where)
81+
# TODO: Don't use set for everything, use INC and such where
82+
# appropriate.
83+
return self.connection.db[self.query.model._meta.db_table].update(
84+
filters,
85+
{"$set": dict((f.column, val) for f, o, val in self.query.values)},
86+
multi=True
87+
)

django/db/models/query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ def _update(self, values):
488488
query = self.query.clone(sql.UpdateQuery)
489489
query.add_update_fields(values)
490490
self._result_cache = None
491-
return query.get_compiler(self.db).execute_sql(None)
491+
return query.get_compiler(self.db).update(None)
492492
_update.alters_data = True
493493

494494
def exists(self):

django/db/models/sql/compiler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,9 @@ def as_sql(self):
866866
if where:
867867
result.append('WHERE %s' % where)
868868
return ' '.join(result), tuple(update_params + params)
869+
870+
def update(self, *args, **kwargs):
871+
return self.execute_sql(*args, **kwargs)
869872

870873
def execute_sql(self, result_type):
871874
"""

0 commit comments

Comments
 (0)