Fixed #29970, #30041 -- Made ModelBase.__new__() pass attrs without contribute_to_class() to type.__new__().

This commit is contained in:
Sergey Fedoseev 2018-12-23 04:11:24 +05:00 committed by Tim Graham
parent ce8b65ac5e
commit a68ea23101
2 changed files with 31 additions and 5 deletions

View file

@ -181,18 +181,33 @@ class ModelInheritanceTests(TestCase):
def test_init_subclass(self):
saved_kwargs = {}
class A:
class A(models.Model):
def __init_subclass__(cls, **kwargs):
super().__init_subclass__()
saved_kwargs.update(kwargs)
kwargs = {'x': 1, 'y': 2, 'z': 3}
class B(A, models.Model, **kwargs):
class B(A, **kwargs):
pass
self.assertEqual(saved_kwargs, kwargs)
@unittest.skipUnless(PY36, '__set_name__ is new in Python 3.6')
@isolate_apps('model_inheritance')
def test_set_name(self):
class ClassAttr:
called = None
def __set_name__(self_, owner, name):
self.assertIsNone(self_.called)
self_.called = (owner, name)
class A(models.Model):
attr = ClassAttr()
self.assertEqual(A.attr.called, (A, 'attr'))
class ModelInheritanceDataTests(TestCase):
@classmethod