Как получить нужное значение из данных, используемых методом json dump
В модели History имеется поле summary. Объект History создается следующим образом, а поле summary использует метод json.dumps. Поле history является TextField, и в шаблоне оно имеет тип 'str'.
[views.py - как создать объект History]
history = History(user=request.user,
study=new_study,
summary=json.dumps({
'field_summary': field_summary,
'file_summary': file_summary
}))
Это суммарное поле из шаблона .
{"field_summary": {"is_recruiting": "None -> Yes", "teacher": None -> \uad8c\ub098\uacbd/\uae40\uc218\uc5f0"}, "file_summary": {}}
Но я хочу получить только значения учителя, используя annotate
[views.py]
histories = History.objects.filter(summary__icontains='teacher', create_date__gte='2022-01-01', create_date__lte='2022-04-10')\.annotate(teacher=Value(json.loads('summary')['field_summary']['teacher'], output_field=CharField()))\.values('study_name', 'teacher', 'create_date')
Поскольку мы использовали json дампы, мы использовали метод json load для чтения данных. Но я получаю ошибку. Как получить нужное значение типа str текстового поля?
JSONDecodeError at /charts/ Expecting value: line 1 column 1 (char 0)