summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2026-03-13 17:06:34 -0400
committerJacob Walls <jacobtylerwalls@gmail.com>2026-03-18 08:22:29 -0400
commit2e33abe57c37dce6ce5eff9e6cbaf47cdddcf1e3 (patch)
treeefd08ab456ac8683f4286b84ebc775d9eb5083e6
parentba4751e0ca558dd8f0d9e6153bec4280289ca2f4 (diff)
Fixed #36987 -- Observed prepared argument in UUIDField.get_db_prep_value().
This avoids two isinstance() calls per UUID value.
-rw-r--r--django/db/models/fields/__init__.py2
-rw-r--r--tests/prefetch_related/models.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index e0ad9f9a8c..e248b70ba3 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -2821,7 +2821,7 @@ class UUIDField(Field):
def get_db_prep_value(self, value, connection, prepared=False):
if value is None:
return None
- if not isinstance(value, uuid.UUID):
+ if not prepared and not isinstance(value, uuid.UUID):
value = self.to_python(value)
if connection.features.has_native_uuid_field:
diff --git a/tests/prefetch_related/models.py b/tests/prefetch_related/models.py
index de2d88395d..236ee57b2c 100644
--- a/tests/prefetch_related/models.py
+++ b/tests/prefetch_related/models.py
@@ -225,6 +225,10 @@ class ArticleCustomUUID(models.Model):
def get_prep_value(self, value):
return str(value)
+ def get_db_prep_value(self, value, connection, prepared=False):
+ # Use prepared=False to ensure str -> UUID conversion is performed.
+ return super().get_db_prep_value(value, connection, prepared=False)
+
id = CustomUUIDField(primary_key=True, default=uuid.uuid4)
name = models.CharField(max_length=30)