1
0
mirror of https://github.com/django/django.git synced 2025-03-09 17:02:43 +00:00

[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
This commit is contained in:
Emanuel Andrecut 2023-12-13 17:04:06 +02:00 committed by Mariusz Felisiak
parent 8b0710cfc9
commit 636d701ded

View File

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