From 35c2474f168fd10ac50886024d5879de81be5bd3 Mon Sep 17 00:00:00 2001
From: Collin Anderson <cmawebsite@gmail.com>
Date: Wed, 16 Feb 2022 14:30:04 -0500
Subject: [PATCH] Made Field.error_messages a cached property.

This speeds up field creation and reduces memory usage.
---
 django/db/models/fields/__init__.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

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):
         """