﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
35588	Migrating primary key to UUIDField causes serializer validation issues	DaanSterk		"For application-specific performance considerations, we recently decided to migrate our primary keys from BigAutoField to UUIDField.

{{{
class BaseModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
}}}

All models extend BaseModel. For example:
{{{
class Message(BaseModel):
    messenger = models.ForeignKey('core.PersonBusinessUmbrella', on_delete=models.CASCADE)
}}}



There is a lot of (writable) nesting involved in our serializers. For example:

{{{
class CustomModelSerializer(ModelSerializer):
    created_at = serializers.DateTimeField(required=False, allow_null=True)

class MessageSerializer(CustomModelSerializer):
    messenger = PersonBusinessUmbrellaSerializer(required=False)

class PersonBusinessUmbrellaSerializer(CustomModelSerializer):
    business_umbrella = BusinessUmbrellaSerializer()

class BusinessUmbrellaSerializer(CustomModelSerializer):
    ...
}}}

All data retrieval continues to work normally. However, when sending POST/PUT requests with that same data structure to the corresponding ModelViewSet, issues arise.

**POST-ing a new Message, including nested models**
{{{
{
    ""uuid"": ""36d562d9-5127-4591-a532-3900c639156a"",
    ""relatedFiles"": [],
    ""order"": ""00e204d9-ef4e-482c-bd5d-8a4129450728"",
    ""messenger"": {
        ""id"": ""b3756ec6-d793-4a4e-88f7-5826e38f83d3"",
        ""uuid"": ""9141eb64-2067-4e22-adb7-4d51d7723565"",
        ""createdAt"": ""2024-07-09T09:38:22.906"",
        ""updatedAt"": ""2024-07-09T09:38:22.906"",
        ""person"": {
            ""id"": ""445da4a0-9ab6-4bad-9d83-40e9215d269f"",
            ""uuid"": ""d74e9c15-9e0d-429e-b9e8-d63c5d68edc7"",
            ""createdAt"": ""2024-07-09T09:38:22.229"",
            ""updatedAt"": ""2024-07-09T09:38:22.229"",
            ""businessUmbrellas"": [
                {
                    ""id"": ""b0cfda01-80df-456c-9603-1b9d68b67270"",
                    ""uuid"": ""51007185-c51b-4dd9-b5ff-d615706abc25"",
                    ""createdAt"": ""2024-07-09T09:38:22.129"",
                    ""updatedAt"": ""2024-07-09T09:38:22.129"",
                    ""name"": ""Bouwman"",
                    ""comment"": null
                }
            ],
            ""firstName"": ""Adam"",
            ""lastName"": ""Willems"",
            ""phoneNumber"": ""0611666677""
        },
        ""businessUmbrella"": {
            ""id"": ""b0cfda01-80df-456c-9603-1b9d68b67270"",
            ""uuid"": ""51007185-c51b-4dd9-b5ff-d615706abc25"",
            ""createdAt"": ""2024-07-09T09:38:22.129"",
            ""updatedAt"": ""2024-07-09T09:38:22.129"",
            ""name"": ""Bouwman"",
            ""comment"": null
        },
        ""email"": ""adriana05@example.net"",
        ""phoneNumber"": null,
        ""roles"": [
            {
                ""id"": ""a75be758-b0f1-45b3-8c8b-f77136d133b0"",
                ""uuid"": ""40d0e317-fdbf-4923-842f-8e665863ec26"",
                ""createdAt"": ""2024-07-09T09:38:25.928"",
                ""updatedAt"": ""2024-07-09T09:38:25.928"",
                ""personBusinessUmbrella"": ""b3756ec6-d793-4a4e-88f7-5826e38f83d3"",
                ""type"": 2,
                ""defaultMachine"": {
                    ""id"": ""3fc4f1ce-9293-4d8c-a5f8-fa710024815e"",
                    ""uuid"": ""7bc16327-07ac-4df2-8c40-4adaa206163d"",
                    ""createdAt"": ""2024-07-09T09:38:22.198"",
                    ""updatedAt"": ""2024-07-09T09:38:22.198"",
                    ""name"": ""Heftruck-hebben""
                }
            }
        ]
    },
    ""body"": ""abc""
}
}}}


**Response**
{{{
{
    ""messenger"": {
        ""nonFieldErrors"": [
            ""‘OrderedDict({'created_at': datetime.datetime(2024, 7, 9, 9, 38, 22, 129000), 'uuid': UUID('51007185-c51b-4dd9-b5ff-d615706abc25'), 'name': 'Bouwman', 'comment': None})’ is geen geldige UUID.""
        ]
    }
}
}}}

Whereas with BigAutoField the serializer validation would understand that the nested OrderedDict represented an entity, it now insists on receiving an actual UUID value."	Uncategorized	closed	Uncategorized		Normal	invalid			Unreviewed	0	0	0	0	0	0
