summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-10-25 15:27:43 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-10-25 17:16:56 +0300
commit7de439f32d5da88f8a5717717a9e152441708a9f (patch)
tree1faf074e3b6ce25d3a9c9e9f2cff490e50106944
parent11b8712cc743b496bdff5fe405a5036734ca67c3 (diff)
Fixed #19187 -- Raise consistent error from qs.values().delete()
-rw-r--r--django/db/models/query.py6
-rw-r--r--tests/regressiontests/delete_regress/tests.py6
2 files changed, 12 insertions, 0 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 412cad026f..dc1ddf1606 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -983,6 +983,12 @@ class ValuesQuerySet(QuerySet):
for row in self.query.get_compiler(self.db).results_iter():
yield dict(zip(names, row))
+ def delete(self):
+ # values().delete() doesn't work currently - make sure it raises an
+ # user friendly error.
+ raise TypeError("Queries with .values() or .values_list() applied "
+ "can't be deleted")
+
def _setup_query(self):
"""
Constructs the field_names list that the values query will be
diff --git a/tests/regressiontests/delete_regress/tests.py b/tests/regressiontests/delete_regress/tests.py
index ec0d460f17..f94bb2f20c 100644
--- a/tests/regressiontests/delete_regress/tests.py
+++ b/tests/regressiontests/delete_regress/tests.py
@@ -267,6 +267,12 @@ class ProxyDeleteTest(TestCase):
self.assertEqual(len(FooFileProxy.objects.all()), 0)
+ def test_19187_values(self):
+ with self.assertRaises(TypeError):
+ Image.objects.values().delete()
+ with self.assertRaises(TypeError):
+ Image.objects.values_list().delete()
+
class Ticket19102Tests(TestCase):
"""
Test different queries which alter the SELECT clause of the query. We