Commit b971c1cd authored by Antoine Catton's avatar Antoine Catton Committed by Tim Graham
Browse files

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



Co-Authored-By: default avatarGavin Wahl <gwahl@fusionbox.com>
parent c7aff313
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)
+2 −0
Original line number Diff line number Diff line
@@ -17,3 +17,5 @@ Bugfixes

* Fixed system check crash on ``ForeignKey`` to abstract model
  (:ticket:`25503`).

* Allowed filtering over a ``RawSQL`` annotation (:ticket:`25506`).
+12 −0
Original line number Diff line number Diff line
@@ -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, [
                '<Company: Example Inc.>',
                '<Company: Foobar Ltd.>',
                '<Company: Test GmbH>',
            ],
        )

    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