diff options
| author | Qi Zhao <zhaoqi99@outlook.com> | 2020-10-08 21:51:14 +0800 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-10-09 08:44:32 +0200 |
| commit | 8c403b17f94a4ace87bfdd7d40bbc3afb18f7577 (patch) | |
| tree | 75043715e3f00f71563717476ff7c691a42aaa20 /django | |
| parent | b0e5e7b67153e6252bcad959ccb061402e7ecd58 (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.py | 3 | ||||
| -rw-r--r-- | django/forms/fields.py | 2 |
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): |
