Django, определяя тип json в модели, создает jsonb вместо json

Я использую JSONField для моей модели Django для типа JSON, но в фоновом режиме, он делает мои столбцы атрибутов типа JSONB, что я не хочу делать здесь, потому что это нарушает мой точный порядок внутренних полей JSON, которые я выталкиваю из моего фронтенд приложения. Вы можете видеть, что порядок полей не является моим точным значением. Чтобы сохранить его как есть, мне нужно использовать JSON вместо jsonb. Поэтому мой вопрос в том, как это сделать?

Что я толкнул:

{
  "type": "array",
  "title": "action_right",
  "additionalProperties": true,
  "items": {
    "type": "object",
    "required": [
      "label",
      "url"
    ],
    "properties": {
      "label": {
        "type": "string",
        "custom_type": "string",
        "title": "label",
        "default": ""
      },
      "url": {
        "type": "string",
        "custom_type": "string",
        "title": "url",
        "default": ""
      }
    }
  }
}

Что хранится:

{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "label",
      "url"
    ],
    "properties": {
      "url": {
        "type": "string",
        "title": "url",
        "default": "",
        "custom_type": "string"
      },
      "label": {
        "type": "string",
        "title": "label",
        "default": "",
        "custom_type": "string"
      }
    }
  },
  "title": "action_right",
  "additionalProperties": true
}

Фрагменты кода:

class Component(models.Model):
    name = models.CharField(max_length=200, unique=True)
    attributes = models.JSONField(default=dict, help_text='Component attributes in JSONSchema')

Примечания:

PostgreSQL имеет два собственных типа данных на основе JSON: json и jsonb. Основное основное различие между ними заключается в том, как они хранятся и как их можно запрашивать. Поле json в PostgreSQL хранится как оригинальное строковое представление JSON и должно быть декодировано на лету при запросе на основе ключей. Поле jsonb хранится на основе фактической структуры JSON, что позволяет осуществлять индексирование. Компромиссом является небольшая дополнительная затраты на запись в поле jsonb. JSONField использует jsonb.

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