Opened 5 years ago
Closed 5 years ago
#31157 closed Bug (fixed)
JSONField are not properly displayed in admin when they are readonly.
Reported by: | Gagaro | Owned by: | dbxnr |
---|---|---|---|
Component: | contrib.admin | Version: | 3.0 |
Severity: | Normal | Keywords: | admin json |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
JSONField values are displayed as dict when readonly in the admin.
For example, {"foo": "bar"}
would be displayed as {'foo': 'bar'}
, which is not valid JSON.
I believe the fix would be to add a special case in django.contrib.admin.utils.display_for_field
to call the prepare_value
of the JSONField
(not calling json.dumps
directly to take care of the InvalidJSONInput
case).
Change History (6)
comment:1 by , 5 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 5 years ago
Has patch: | set |
---|
comment:4 by , 5 years ago
The proposed patch is problematic as the first version coupled contrib.postgres
with .admin
and the current one is based off the type name which is brittle and doesn't account for inheritance.
It might be worth waiting for #12990 to land before proceeding here as the patch will be able to simply rely of django.db.models.JSONField
instance checks from that point.
PR