mirror of https://github.com/django/django.git
[1.8.x] Fixed #25506 -- Allowed filtering over a RawSQL annotation.
Co-Authored-By: Gavin Wahl <gwahl@fusionbox.com>
Backport of b971c1cd78
from master
This commit is contained in:
parent
4171d208f4
commit
ee6785ebea
|
@ -204,7 +204,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)
|
||||||
|
|
|
@ -21,3 +21,5 @@ Bugfixes
|
||||||
* Fixed incorrect queries when you have multiple ``ManyToManyField``\s on
|
* Fixed incorrect queries when you have multiple ``ManyToManyField``\s on
|
||||||
different models that have the same field name, point to the same model, and
|
different models that have the same field name, point to the same model, and
|
||||||
have their reverse relations disabled (:ticket:`25545`).
|
have their reverse relations disabled (:ticket:`25545`).
|
||||||
|
|
||||||
|
* Allowed filtering over a ``RawSQL`` annotation (:ticket:`25506`).
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue