mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #18463 -- Forced type() argument to be a byte string
This commit is contained in:
		| @@ -5,6 +5,7 @@ Factored out from django.db.models.query to avoid making the main module very | |||||||
| large and/or so that they can be used by other modules without getting into | large and/or so that they can be used by other modules without getting into | ||||||
| circular import difficulties. | circular import difficulties. | ||||||
| """ | """ | ||||||
|  | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| from django.db.backends import util | from django.db.backends import util | ||||||
| from django.utils import tree | from django.utils import tree | ||||||
| @@ -177,7 +178,7 @@ def deferred_class_factory(model, attrs): | |||||||
|     overrides["Meta"] = Meta |     overrides["Meta"] = Meta | ||||||
|     overrides["__module__"] = model.__module__ |     overrides["__module__"] = model.__module__ | ||||||
|     overrides["_deferred"] = True |     overrides["_deferred"] = True | ||||||
|     return type(name, (model,), overrides) |     return type(str(name), (model,), overrides) | ||||||
|  |  | ||||||
| # The above function is also used to unpickle model instances with deferred | # The above function is also used to unpickle model instances with deferred | ||||||
| # fields. | # fields. | ||||||
|   | |||||||
| @@ -174,3 +174,10 @@ class DeferRegressionTest(TestCase): | |||||||
|         qs = ResolveThis.objects.defer('num') |         qs = ResolveThis.objects.defer('num') | ||||||
|         self.assertEqual(1, qs.count()) |         self.assertEqual(1, qs.count()) | ||||||
|         self.assertEqual('Foobar', qs[0].name) |         self.assertEqual('Foobar', qs[0].name) | ||||||
|  |  | ||||||
|  |     def test_deferred_class_factory(self): | ||||||
|  |         from django.db.models.query_utils import deferred_class_factory | ||||||
|  |         new_class = deferred_class_factory(Item, | ||||||
|  |             ('this_is_some_very_long_attribute_name_so_modelname_truncation_is_triggered',)) | ||||||
|  |         self.assertEqual(new_class.__name__, | ||||||
|  |             'Item_Deferred_this_is_some_very_long_attribute_nac34b1f495507dad6b02e2cb235c875e') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user