Как создать индекс postgres db для jsonfield в Django с помощью ORM?

Я сделал миграцию и добавил именно этот sql: migrations.RunSQL("CREATE INDEX my_json_idx on my_table((my_json_data->'id'));") Это работает.

Все, что я пытаюсь сделать, это получить точный эквивалент, но используя Django ORM, чтобы я мог поместить что-то в мой models.py файл в

class Meta:
 indexes=[...]

Таким образом, всем этим можно управлять на уровне "кода", а django позаботится обо всем остальном. Я попробовал следующее: models.Index(KeyTextTransform('id', 'my_json_data'), name='my_json_idx')

Это прекрасно создает индекс, но использует ->> что-то вроде CREATE INDEX my_json_idx on my_table((my_json_data->>'id'));"). Что является проблемой, потому что запросы из django orm, такие как my_table.objects.filter(my_json_data__id=123) переводятся в -> в ORM. И индекс в итоге пропускается. Делается полное сканирование.

Вернуться на верх