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 | ||||
| circular import difficulties. | ||||
| """ | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.db.backends import util | ||||
| from django.utils import tree | ||||
| @@ -177,7 +178,7 @@ def deferred_class_factory(model, attrs): | ||||
|     overrides["Meta"] = Meta | ||||
|     overrides["__module__"] = model.__module__ | ||||
|     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 | ||||
| # fields. | ||||
|   | ||||
| @@ -174,3 +174,10 @@ class DeferRegressionTest(TestCase): | ||||
|         qs = ResolveThis.objects.defer('num') | ||||
|         self.assertEqual(1, qs.count()) | ||||
|         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