Browse Source

[5.0.x] Fixed #35032 -- Corrected Char32UUIDField implementation in 5.0 release notes.

This fixes Char32UUIDField implementation in 5.0 release notes causing
records with UUIDFields created using pre-Django 5.0 and CHAR(32) not
being able to be saved anymore after upgrading and keeping the CHAR(32)
columns.

Regression in 7cd187a5ba58d7769039f487faeb9a5a2ff05540.

Backport of e72b2826ff1eaf2f48ee54a40d2f2988a1fdbb0a from main
Emanuel Andrecut 1 year ago
parent
commit
636d701ded
1 changed files with 7 additions and 2 deletions
  1. 7 2
      docs/releases/5.0.txt

+ 7 - 2
docs/releases/5.0.txt

@@ -508,6 +508,12 @@ Django < 5.0 should be replaced with a ``UUIDField`` subclass backed by
         def db_type(self, connection):
             return "char(32)"
 
+        def get_db_prep_value(self, value, connection, prepared=False):
+            value = super().get_db_prep_value(value, connection, prepared)
+            if value is not None:
+                value = value.hex
+            return value
+
 For example::
 
     class MyModel(models.Model):
@@ -516,8 +522,7 @@ For example::
 Should become::
 
     class Char32UUIDField(models.UUIDField):
-        def db_type(self, connection):
-            return "char(32)"
+        ...
 
 
     class MyModel(models.Model):