mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
parent
316cc34d04
commit
0c0240aba8
@ -59,6 +59,36 @@ class AbstractInheritanceTests(SimpleTestCase):
|
|||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_target_field_may_be_pushed_down(self):
|
||||||
|
"""
|
||||||
|
Where the Child model needs to inherit a field from a different base
|
||||||
|
than that given by depth-first resolution, the target field can be
|
||||||
|
**pushed down** by being re-declared.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Root(models.Model):
|
||||||
|
name = models.CharField(max_length=255)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
class ParentA(Root):
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
class ParentB(Root):
|
||||||
|
name = models.IntegerField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
class Child(ParentA, ParentB):
|
||||||
|
name = models.IntegerField()
|
||||||
|
|
||||||
|
self.assertEqual(Child.check(), [])
|
||||||
|
inherited_field = Child._meta.get_field('name')
|
||||||
|
self.assertTrue(isinstance(inherited_field, models.IntegerField))
|
||||||
|
|
||||||
def test_multiple_inheritance_cannot_shadow_concrete_inherited_field(self):
|
def test_multiple_inheritance_cannot_shadow_concrete_inherited_field(self):
|
||||||
class ConcreteParent(models.Model):
|
class ConcreteParent(models.Model):
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
Loading…
Reference in New Issue
Block a user