Как решить проблему, при которой данные типа json загружаются из шаблона в строковый тип
Поле "content" содержит данные в формате json. Но когда я проверяю это значение в шаблоне, оно преобразуется в строку. Я хочу вывести значение, соответствующее учителю, из словаря ниже. Что не так?
[views.py]
history = History(user=request.user,
study=study,
content=study.json())
history.save()
test = History.objects.filter(study__id='12')
Значение "content" хранится в БД: {'id': 12, 'is_deleted': 'False', 'type':'secondary', 'study_name':'Math', 'teacher':'Halen/Lisa', 'team': 'A'}
[html]
{% for test in test %}
{{ test.content.teacher }}? {{ test.content}}
{% endfor %}
В случае словаря можно вызвать нужное значение ключа, но поскольку он является строковым типом, значение учитель получить не может. Что должен сделать учитель, чтобы получить значение, которое является ключом?
Исходя из Python convert string dictionary to dictionary, мы можем использовать
import json
history = History(user=request.user,
study=study,
content=study.json())
history.save()
test = History.objects.filter(study__id='12')
test_content = json.loads(test.content)
ИЛИ
Вы можете напрямую сделать json.loads() в поле, используя теги шаблона, как указано здесь.
Вы можете использовать literal_eval, если свойства заключены в одиночные кавычки:
import ast
...
test.content = ast.literal_eval(test.content)