Извлечение ключей из Django JsonField, когда оно является массивом, с помощью KeyTransform
Когда у меня есть такие данные, которые представляют собой periodicity
JsonField из модели Series
:
{'id': 20597, 'periodicity': [{'period': 'weekly', 'end_date': '2021-09-30', 'start_date': '2020-12-11'}]}
{'id': 20596, 'periodicity': [{'period': 'weekly', 'end_date': '2021-03-05', 'start_date': '2021-03-05'}]}
{'id': 20595, 'periodicity': [{'period': 'weekly', 'end_date': '2021-09-24', 'start_date': '2020-12-11'}]}
{'id': 20593, 'periodicity': [{'period': 'weekly', 'end_date': '2021-09-24', 'start_date': '2020-01-27'}]}
{'id': 18090, 'periodicity': [{'period': 'daily', 'end_date': '2021-06-04', 'start_date': '2012-01-03'}, {'period': 'weekly', 'end_date': '2021-08-30', 'start_date': '2020-12-14'}]}
{'id': 18089, 'periodicity': [{'period': 'daily', 'end_date': '2021-06-04', 'start_date': '2012-01-03'}, {'period': 'weekly', 'end_date': '2021-08-30', 'start_date': '2020-12-14'}]}
Проблема, как вы можете видеть, JsonField является массивом dict. Я хотел бы извлечь все ключи end_date
, даже просто как текст. Кажется, что KeyTransform
или KeyTextTransfom
не работает, когда я делаю:
Series.objects.annotate(end_date=KeyTransform("end_date", "periodicity")).values("id", "end_date", "periodicity")
Как я могу это получить? Кстати, я хочу получить из массива самый старый end_date
. Невозможно найти решение, используя PostgreSQL или Django.