#31973: TypeError loading data in JSONField if DB has native JSON support
-------------------------------------+-------------------------------------
Reporter: Adam Alton | Owner: nobody
Type: Bug | Status: closed
Component: Database layer | Version: 3.1
(models, ORM) |
Severity: Normal | Resolution: needsinfo
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Adam Alton):
Thanks for your swift reply, @felixxm. You're right, this is caused by the
database having the fields as type `json` rather than `jsonb`, even though
the DB schema has only ever been altered via Django's migrations.
So (contrary to my original report) there is not a bug in `value_from_db`.
The question now is whether there's a bug in Django's migration logic.
The fields which were getting this error were originally using a custom
`JSONField`, which was a subclass of `models.TextField`, and so presumably
their original DB column type was `text`. I then changed them to use the
native `models.JSONField`, and got Django to automatically create a
migration (which contains a `migrations.AlterField` operation for each
field, converting them to the native `models.JSONField`).
The weird thing is that that migration converted the DB columns to type
`json` rather than `jsonb`.
I can fix that in my own DB, no problem. But the remaining question is
this: is that behaviour unexpected and should we fix it?
It seems unexpected to me that Django is happily creating the migration
and applying it, but that the DB then ends up in an unusable state.
Presumably Django should either say "I can't do that change, write your
own migration" or it should apply the correct change.
Happy to make a new ticket if the decision is that this is a valid bug.
--
Ticket URL: <https://code.djangoproject.com/ticket/31973#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.1ac442c45ddc83f8657aa1a009e9f7d1%40djangoproject.com.