Django save request.POST to JSONField выбирает последний элемент из списка вместо сохранения списка
У меня есть представление, которое получает пост-запрос от client.post()
data = {
"token": create_hash(customer_name),
"images": [image_1, image_2],
"name": customer_name,
"email": "test@email.com",
"phone": "0612345678",
"product": "product-sku0",
"font_family": "Helvetica",
"font_size": 12,
"colors_used": (
"#AAAAAA|White D",
"#FFFFFF|Black C"
)
}
Я пытаюсь сохранить пост-запрос целиком в model.JSONfield().
Пара ключ-значение почтового запроса выглядит следующим образом:
'colors_used': ['#AAAAAA|White D', '#FFFFFF|Black C']
Когда я сохраняю и позже извлекаю значение, оно выглядит следующим образом:
'colors_used': '#FFFFFF|Black C'
Вместо сохранения вложенного списка в поле JSON он сохранил только последнее значение.
Я использую SQLite.
Оказывается, это просто поведение по умолчанию при преобразовании набора запросов в json-строку. На уровне ключей вы можете использовать getlist() для получения всех значений многозначного ключа.
В итоге я поместил всю вложенную структуру данных в одну json-строку с помощью json.dumps(data) и просто отправил ее вместе с запросом.