summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)