mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[1.7.x] Fixed #22250 -- regression in gis compiler for non-concrete fields
Thanks to gwahl@fusionbox.com for the report.
Backport of 21f208e66e from master
			
			
This commit is contained in:
		| @@ -124,7 +124,7 @@ class GeoSQLCompiler(compiler.SQLCompiler): | |||||||
|         seen = self.query.included_inherited_models.copy() |         seen = self.query.included_inherited_models.copy() | ||||||
|         if start_alias: |         if start_alias: | ||||||
|             seen[None] = start_alias |             seen[None] = start_alias | ||||||
|         for field, model in opts.get_fields_with_model(): |         for field, model in opts.get_concrete_fields_with_model(): | ||||||
|             if from_parent and model is not None and issubclass(from_parent, model): |             if from_parent and model is not None and issubclass(from_parent, model): | ||||||
|                 # Avoid loading data for already loaded parents. |                 # Avoid loading data for already loaded parents. | ||||||
|                 continue |                 continue | ||||||
|   | |||||||
| @@ -794,3 +794,12 @@ class GeoQuerySetTest(TestCase): | |||||||
|         self.assertEqual(True, union.equals_exact(u2, tol)) |         self.assertEqual(True, union.equals_exact(u2, tol)) | ||||||
|         qs = City.objects.filter(name='NotACity') |         qs = City.objects.filter(name='NotACity') | ||||||
|         self.assertEqual(None, qs.unionagg(field_name='point')) |         self.assertEqual(None, qs.unionagg(field_name='point')) | ||||||
|  |  | ||||||
|  |     def test_non_concrete_field(self): | ||||||
|  |         pkfield = City._meta.get_field_by_name('id')[0] | ||||||
|  |         orig_pkfield_col = pkfield.column | ||||||
|  |         pkfield.column = None | ||||||
|  |         try: | ||||||
|  |             list(City.objects.all()) | ||||||
|  |         finally: | ||||||
|  |             pkfield.column = orig_pkfield_col | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user