Kaydet (Commit) b971c1cd authored tarafından Antoine Catton's avatar Antoine Catton Kaydeden (comit) Tim Graham

Fixed #25506 -- Allowed filtering over a RawSQL annotation.

Co-Authored-By: 's avatarGavin Wahl <gwahl@fusionbox.com>
üst c7aff313
...@@ -151,7 +151,7 @@ class BuiltinLookup(Lookup): ...@@ -151,7 +151,7 @@ class BuiltinLookup(Lookup):
lhs_sql = connection.ops.field_cast_sql( lhs_sql = connection.ops.field_cast_sql(
db_type, field_internal_type) % lhs_sql db_type, field_internal_type) % lhs_sql
lhs_sql = connection.ops.lookup_cast(self.lookup_name, 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): def as_sql(self, compiler, connection):
lhs_sql, params = self.process_lhs(compiler, connection) lhs_sql, params = self.process_lhs(compiler, connection)
......
...@@ -17,3 +17,5 @@ Bugfixes ...@@ -17,3 +17,5 @@ Bugfixes
* Fixed system check crash on ``ForeignKey`` to abstract model * Fixed system check crash on ``ForeignKey`` to abstract model
(:ticket:`25503`). (:ticket:`25503`).
* Allowed filtering over a ``RawSQL`` annotation (:ticket:`25506`).
...@@ -57,6 +57,18 @@ class BasicExpressionsTests(TestCase): ...@@ -57,6 +57,18 @@ class BasicExpressionsTests(TestCase):
) )
self.assertEqual(companies['result'], 2395) 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, [
'<Company: Example Inc.>',
'<Company: Foobar Ltd.>',
'<Company: Test GmbH>',
],
)
def test_filter_inter_attribute(self): def test_filter_inter_attribute(self):
# We can filter on attribute relationships on same model obj, e.g. # We can filter on attribute relationships on same model obj, e.g.
# find companies where the number of employees is greater # find companies where the number of employees is greater
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment