From 99d40c6f658ead97f67d331eed9278805c8a4007 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Mon, 13 Apr 2015 18:57:11 -0400 Subject: [PATCH] Fixed #24277 -- Added exception when dict used in QuerySet filtering --- django/db/models/sql/query.py | 2 ++ tests/queries/tests.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 69178680ee..b514cc4783 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1121,6 +1121,8 @@ class Query(object): query. However, if the filter isn't added to the query then the caller is responsible for unreffing the joins used. """ + if isinstance(filter_expr, dict): + raise FieldError("Cannot parse keyword query as dict") arg, value = filter_expr if not arg: raise FieldError("Cannot parse keyword query %r" % arg) diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 82d6d1fe7c..f688d0ed90 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -440,6 +440,10 @@ class Queries1Tests(BaseQuerysetTest): [''] ) + def test_error_raised_on_filter_with_dictionary(self): + with self.assertRaisesMessage(FieldError, 'Cannot parse keyword query as dict'): + Note.objects.filter({'note': 'n1', 'misc': 'foo'}) + def test_tickets_2076_7256(self): # Ordering on related tables should be possible, even if the table is # not otherwise involved.