From e2f524ca09bacef4545b56dc3f136655fa0b912c Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 23 Feb 2008 00:23:57 +0000 Subject: [PATCH] queryset-refactor: Fixed the case of calling update() on a model manager. git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@7146 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/manager.py | 2 +- django/db/models/sql/query.py | 3 ++- tests/modeltests/update/models.py | 7 +++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/django/db/models/manager.py b/django/db/models/manager.py index 34811cd324..8080480ae8 100644 --- a/django/db/models/manager.py +++ b/django/db/models/manager.py @@ -102,7 +102,7 @@ class Manager(object): return self.get_query_set().values(*args, **kwargs) def update(self, *args, **kwargs): - return self.get_query_set().updated(*args, **kwargs) + return self.get_query_set().update(*args, **kwargs) def _insert(self, *args, **kwargs): return self.get_query_set()._insert(*args, **kwargs) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index fba4a088f0..20dcb4b71d 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1240,7 +1240,8 @@ class UpdateQuery(Query): values.append('%s = NULL' % qn(name)) result.append(', '.join(values)) where, params = self.where.as_sql() - result.append('WHERE %s' % where) + if where: + result.append('WHERE %s' % where) return ' '.join(result), tuple(update_params + params) def clear_related(self, related_field, pk_list): diff --git a/tests/modeltests/update/models.py b/tests/modeltests/update/models.py index 55b30cd3f5..3b0f83389f 100644 --- a/tests/modeltests/update/models.py +++ b/tests/modeltests/update/models.py @@ -56,5 +56,12 @@ Multiple fields can be updated at once >>> d.value, d.another_value (u'fruit', u'peaches') +In the rare case you want to update every instance of a model, update() is also +a manager method. + +>>> DataPoint.objects.update(value='thing') +>>> DataPoint.objects.values('value').distinct() +[{'value': u'thing'}] + """ }