Полагаю, что в БД записать даже на php недостаточно записи
$data = ['0'=>1, '4'=>2]
В python делается примерно так:
import json
data = {'0': 1, '4': 2}
instance.field_name = json.dumps(data)
instance.save()
Также можно использовать поле
JSONField, тогда чтение/запись json будет прозрачным:
from django.contrib.postgres.fields import JSONField
from django.db import models
class CustomModel(models.Model):
json_field_name = JSONField()
instance = CustomModel()
instance.field_name = {'0': 1, '4': 2}
instance.save()
Сохранить порядок ключей можно только, если использовать
OrderedDict, однако это не гарантирует, что при сохранении в JSON и чтении порядок сохранится. Лучше для таких целей немного изменить формат данных, например, использовать список:
data = [{'0': 4}, {'4': 2}]