summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorQi Zhao <zhaoqi99@outlook.com>2020-10-08 21:51:14 +0800
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-09 08:44:32 +0200
commit8c403b17f94a4ace87bfdd7d40bbc3afb18f7577 (patch)
tree75043715e3f00f71563717476ff7c691a42aaa20 /django
parentb0e5e7b67153e6252bcad959ccb061402e7ecd58 (diff)
[3.1.x] Fixed #32080 -- Fixed displaying Unicode chars in forms.JSONField and read-only JSONField values in admin.
Backport of de81676b51e4dad510ef387c3ae625f9091fe57f from master
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/utils.py3
-rw-r--r--django/forms/fields.py2
2 files changed, 3 insertions, 2 deletions
diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py
index 446083e659..ba06da5211 100644
--- a/django/contrib/admin/utils.py
+++ b/django/contrib/admin/utils.py
@@ -1,5 +1,6 @@
import datetime
import decimal
+import json
from collections import defaultdict
from django.core.exceptions import FieldDoesNotExist
@@ -400,7 +401,7 @@ def display_for_field(value, field, empty_value_display):
return format_html('<a href="{}">{}</a>', value.url, value)
elif isinstance(field, models.JSONField) and value:
try:
- return field.get_prep_value(value)
+ return json.dumps(value, ensure_ascii=False, cls=field.encoder)
except TypeError:
return display_for_value(value, empty_value_display)
else:
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 36dad72704..0efeb298cd 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -1265,7 +1265,7 @@ class JSONField(CharField):
def prepare_value(self, value):
if isinstance(value, InvalidJSONInput):
return value
- return json.dumps(value, cls=self.encoder)
+ return json.dumps(value, ensure_ascii=False, cls=self.encoder)
def has_changed(self, initial, data):
if super().has_changed(initial, data):