Fixed #7298: prevent update() on sliced QuerySet since UPDATE doesn't reliably support LIMIT/OFFSET. Thanks, George Vilches.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7601 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
12716794db
commit
b5f92938ab
|
@ -292,6 +292,8 @@ class QuerySet(object):
|
|||
Updates all elements in the current QuerySet, setting all the given
|
||||
fields to the appropriate values.
|
||||
"""
|
||||
assert self.query.can_filter(), \
|
||||
"Cannot update a query once a slice has been taken."
|
||||
query = self.query.clone(sql.UpdateQuery)
|
||||
query.add_update_values(kwargs)
|
||||
query.execute_sql(None)
|
||||
|
@ -306,6 +308,8 @@ class QuerySet(object):
|
|||
code (it requires too much poking around at model internals to be
|
||||
useful at that level).
|
||||
"""
|
||||
assert self.query.can_filter(), \
|
||||
"Cannot update a query once a slice has been taken."
|
||||
query = self.query.clone(sql.UpdateQuery)
|
||||
query.add_update_fields(values)
|
||||
query.execute_sql(None)
|
||||
|
|
|
@ -63,5 +63,12 @@ a manager method.
|
|||
>>> DataPoint.objects.values('value').distinct()
|
||||
[{'value': u'thing'}]
|
||||
|
||||
We do not support update on already sliced query sets.
|
||||
|
||||
>>> DataPoint.objects.all()[:2].update(another_value='another thing')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
AssertionError: Cannot update a query once a slice has been taken.
|
||||
|
||||
"""
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue