Opened 6 years ago

Last modified 6 years ago

#29747 closed Bug

UUID in loaddata fixture raise ValidationError on objects having OneToOne relationship (uuid as FK). — at Version 2

Reported by: stockersky Owned by: nobody
Component: Database layer (models, ORM) Version: 2.1
Severity: Normal Keywords: uuid fixture loaddata OneToOne
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by stockersky)

Hello,

I was working on my django project with version 2.0.
Today I redeployed my development environment and installed the lastest Django version through pip : 2.1.1

While loading my database fixture to populate it (python manage.py loaddata data_fixture.json), it raised :

Traceback (most recent call last):
  File "/PROJECTS/SOFTWARES/pvenvs/cvdjango/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 2325, in to_python
    return uuid.UUID(value)
  File "/PROJECTS/SOFTWARES/python366/lib/python3.6/uuid.py", line 140, in __init__
    raise ValueError('badly formed hexadecimal UUID string')
ValueError: badly formed hexadecimal UUID string

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/PROJECTS/SOFTWARES/pvenvs/cvdjango/lib/python3.6/site-packages/django/core/serializers/python.py", line 100, in Deserializer
    data[Model._meta.pk.attname] = Model._meta.pk.to_python(d.get('pk'))
  File "/PROJECTS/SOFTWARES/pvenvs/cvdjango/lib/python3.6/site-packages/django/db/models/fields/related.py", line 874, in to_python
    return self.target_field.to_python(value)
  File "/PROJECTS/SOFTWARES/pvenvs/cvdjango/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 2330, in to_python
    params={'value': value},
django.core.exceptions.ValidationError: ["La valeur «\xa020\xa0» n'est pas un UUID valide."]

......................

 raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), None)
django.core.serializers.base.DeserializationError: Problem installing fixture '/PROJECTS/CODE/cv_project/cv_frontend/fixtures/data_fixture.json': ["La valeur «\xa020\xa0» n'est pas un UUID valide."]: (cv_frontend.PersonalInfo:pk=20) field_value was 'None'

I flushed migrations, dropped/recreate database and ran migrations again. Still had the error...

I could actually still create an object having uuid as PK in the admin console and link other objects to it.

Then I began to delete objects in my fixture file and try to run again loaddata : when I deleted every fixture object that had OneToOne relationship, it passed!!!

I finally rolled back to Django 2.0 and could run the whole fixture with no problem!

Does it sound like a bug?

Change History (2)

comment:1 by stockersky, 6 years ago

Type: UncategorizedBug

comment:2 by stockersky, 6 years ago

Description: modified (diff)
Summary: Django 2.1.1 : UUID in loaddata fixture raise ValidationError on objects having OneToOne relationship (uuid as FK).UUID in loaddata fixture raise ValidationError on objects having OneToOne relationship (uuid as FK).
Note: See TracTickets for help on using tickets.
Back to Top