diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py index 93053c8160..b50711ada4 100644 --- a/django/db/models/lookups.py +++ b/django/db/models/lookups.py @@ -151,7 +151,7 @@ class BuiltinLookup(Lookup): lhs_sql = connection.ops.field_cast_sql( db_type, field_internal_type) % lhs_sql lhs_sql = connection.ops.lookup_cast(self.lookup_name, field_internal_type) % lhs_sql - return lhs_sql, params + return lhs_sql, list(params) def as_sql(self, compiler, connection): lhs_sql, params = self.process_lhs(compiler, connection) diff --git a/docs/releases/1.8.6.txt b/docs/releases/1.8.6.txt index b972ee0148..4e455d7672 100644 --- a/docs/releases/1.8.6.txt +++ b/docs/releases/1.8.6.txt @@ -17,3 +17,5 @@ Bugfixes * Fixed system check crash on ``ForeignKey`` to abstract model (:ticket:`25503`). + +* Allowed filtering over a ``RawSQL`` annotation (:ticket:`25506`). diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 1af0b6e7a2..f68892782f 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -57,6 +57,18 @@ class BasicExpressionsTests(TestCase): ) self.assertEqual(companies['result'], 2395) + def test_annotate_values_filter(self): + companies = Company.objects.annotate( + foo=RawSQL('%s', ['value']), + ).filter(foo='value').order_by('name') + self.assertQuerysetEqual( + companies, [ + '', + '', + '', + ], + ) + def test_filter_inter_attribute(self): # We can filter on attribute relationships on same model obj, e.g. # find companies where the number of employees is greater