Fixed #33441 -- Restored immutability of models.Field.__hash__().

Regression in 502e75f9ed.
This commit is contained in:
Adam Johnson 2022-01-13 18:51:18 +00:00 committed by Mariusz Felisiak
parent 652c68ffee
commit fdfa97fb16
2 changed files with 9 additions and 8 deletions

View File

@ -542,11 +542,7 @@ class Field(RegisterLookupMixin):
return NotImplemented
def __hash__(self):
return hash((
self.creation_counter,
self.model._meta.app_label if hasattr(self, 'model') else None,
self.model._meta.model_name if hasattr(self, 'model') else None,
))
return hash(self.creation_counter)
def __deepcopy__(self, memodict):
# We don't have to deepcopy very much here, since most things are not

View File

@ -128,9 +128,14 @@ class BasicFieldTests(SimpleTestCase):
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))
def test_hash_immutability(self):
field = models.IntegerField()
field_hash = hash(field)
class MyModel(models.Model):
rank = field
self.assertEqual(field_hash, hash(field))
class ChoicesTests(SimpleTestCase):