diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-03-13 17:06:34 -0400 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-03-18 08:22:29 -0400 |
| commit | 2e33abe57c37dce6ce5eff9e6cbaf47cdddcf1e3 (patch) | |
| tree | efd08ab456ac8683f4286b84ebc775d9eb5083e6 | |
| parent | ba4751e0ca558dd8f0d9e6153bec4280289ca2f4 (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__.py | 2 | ||||
| -rw-r--r-- | tests/prefetch_related/models.py | 4 |
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) |
