1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #31750 -- Made models.Field equality compare models for inherited fields.

This commit is contained in:
Ryan Hiebert
2020-06-29 23:16:05 -05:00
committed by Mariusz Felisiak
parent 453967477e
commit 502e75f9ed
3 changed files with 57 additions and 3 deletions

View File

@@ -102,6 +102,36 @@ class BasicFieldTests(SimpleTestCase):
name, path, args, kwargs = Nested.Field().deconstruct()
self.assertEqual(path, 'model_fields.tests.Nested.Field')
def test_abstract_inherited_fields(self):
"""Field instances from abstract models are not equal."""
class AbstractModel(models.Model):
field = models.IntegerField()
class Meta:
abstract = True
class InheritAbstractModel1(AbstractModel):
pass
class InheritAbstractModel2(AbstractModel):
pass
abstract_model_field = AbstractModel._meta.get_field('field')
inherit1_model_field = InheritAbstractModel1._meta.get_field('field')
inherit2_model_field = InheritAbstractModel2._meta.get_field('field')
self.assertNotEqual(abstract_model_field, inherit1_model_field)
self.assertNotEqual(abstract_model_field, inherit2_model_field)
self.assertNotEqual(inherit1_model_field, inherit2_model_field)
self.assertLess(abstract_model_field, inherit1_model_field)
self.assertLess(abstract_model_field, inherit2_model_field)
self.assertLess(inherit1_model_field, inherit2_model_field)
self.assertNotEqual(hash(abstract_model_field), hash(inherit1_model_field))
self.assertNotEqual(hash(abstract_model_field), hash(inherit2_model_field))
self.assertNotEqual(hash(inherit1_model_field), hash(inherit2_model_field))
class ChoicesTests(SimpleTestCase):