Quellcode durchsuchen

Refs #30427, Refs #16176 -- Added test for abstract model inheritance.

Carlton Gibson vor 3 Jahren
Ursprung
Commit
0c0240aba8
1 geänderte Dateien mit 30 neuen und 0 gelöschten Zeilen
  1. 30 0
      tests/model_inheritance/test_abstract_inheritance.py

+ 30 - 0
tests/model_inheritance/test_abstract_inheritance.py

@@ -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):
         class ConcreteParent(models.Model):
             name = models.CharField(max_length=255)