#29096: JSONField() as base_field for ArrayField() for creating an object array
-------------------------------------+-------------------------------------
Reporter: Jim Biggs | Owner: nobody
Type: | Status: new
Uncategorized |
Component: Core | Version: 2.0
(Serialization) | Keywords: serialization,
Severity: Normal | JSONField, ArrayField
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Current Environment:
• Latest Django-2
• Latest Django Rest Framework
• PostgreSQL-9.5
• Ubuntu-16.04
My understanding of the JSONField() is that it is a field container for a
single JSON object. My use-case requires an array of objects. So, I
created an ArrayField() that nests a JSONField() as its model base_field
-- as shown in the code block, below:
{{{
questions = ArrayField(JSONField(null=True, blank=True, default=dict),
max_length=200, blank=True, default=[])
}}}
Everything seems to work fine with the exception of the JSON object being
stringified, as shown below:
{{{
"questions": [
"{
\"question\": \"What is the answer to everything?\",
\"answer\": \"42\"
}",
"{
\"question\": \"What year is it?\",
\"answer\": \"2018\"
}"
],
}}}
I believe the inserted backslashes (\) are a result of the serialization
process. My question is whether there is a better way for me to define
this object array model field?
Regards... Jim
--
Ticket URL: <https://code.djangoproject.com/ticket/29096>
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/051.fd9941ae9b6dfa5471706957baac3e34%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.