mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	[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:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							4171d208f4
						
					
				
				
					commit
					ee6785ebea
				
			| @@ -204,7 +204,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) | ||||
|   | ||||
| @@ -21,3 +21,5 @@ Bugfixes | ||||
| * Fixed incorrect queries when you have multiple ``ManyToManyField``\s on | ||||
|   different models that have the same field name, point to the same model, and | ||||
|   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) | ||||
|  | ||||
|     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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user