diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 0afc2a0c92..4d17c25f0f 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -217,12 +217,7 @@ class Field(RegisterLookupMixin):
 
         self._validators = list(validators)  # Store for deconstruction later
 
-        messages = {}
-        for c in reversed(self.__class__.__mro__):
-            messages.update(getattr(c, "default_error_messages", {}))
-        messages.update(error_messages or {})
         self._error_messages = error_messages  # Store for deconstruction later
-        self.error_messages = messages
 
     def __str__(self):
         """
@@ -669,6 +664,14 @@ class Field(RegisterLookupMixin):
         """
         return value
 
+    @cached_property
+    def error_messages(self):
+        messages = {}
+        for c in reversed(self.__class__.__mro__):
+            messages.update(getattr(c, "default_error_messages", {}))
+        messages.update(self._error_messages or {})
+        return messages
+
     @cached_property
     def validators(self):
         """