Fixed #18463 -- Forced type() argument to be a byte string
This commit is contained in:
parent
c4c7fbcc0d
commit
3dd5d726d1
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue