Какое поле модели Django использовать для следующих данных JSON из draft.js (react-draft-wysiwyg)?

У меня есть компонент react-draft-wysiwyg в моем приложении NextJS, и я пытаюсь найти способ сохранить его в бэкенде Django REST.

Это строгированный JSON, который я получаю непосредственно из компонента draft, но я не уверен, как организовать модель django, чтобы хранить такие данные, а также иметь возможность делать PATCH и GET запросы позже. Буду признателен за любую помощь!

{
  blocks: [
    {
      key: '64o0i',
      text: 'Introduction edited',
      type: 'header-three',
      depth: 0,
      inlineStyleRanges: [],
      entityRanges: [],
      data: {},
    },
    {
      key: 'dcomv',
      text: 'this will be the awesome shit',
      type: 'unstyled',
      depth: 0,
      inlineStyleRanges: [],
      entityRanges: [],
      data: {},
    },
    {
      key: 'edvnc',
      text: 'Body paragraph',
      type: 'header-three',
      depth: 0,
      inlineStyleRanges: [
        { offset: 0, length: 14, style: 'color-rgb(0,0,0)' },
        { offset: 0, length: 14, style: 'bgcolor-rgb(255,255,255)' },
        { offset: 0, length: 14, style: 'fontsize-24' },
        {
          offset: 0,
          length: 14,
          style:
            'fontfamily-ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji',
        },
      ],
      entityRanges: [],
      data: {},
    },
    {
      key: 'd3sf7',
      text: 'this will be the awesome shit klasdfj lk;',
      type: 'unstyled',
      depth: 0,
      inlineStyleRanges: [
        { offset: 0, length: 41, style: 'color-rgb(0,0,0)' },
        { offset: 0, length: 41, style: 'bgcolor-rgb(255,255,255)' },
        { offset: 0, length: 41, style: 'fontsize-medium' },
        {
          offset: 0,
          length: 41,
          style:
            'fontfamily-ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji',
        },
      ],
      entityRanges: [],
      data: { 'text-align': 'left' },
    },
  ],
  entityMap: {},
};

Вы можете использовать Django JsonField https://docs.djangoproject.com/en/4.0/ref/models/fields/

def contact_default():
return {"email": "to1@example.com"}

contact_info = JSONField("ContactInfo", default=contact_default)

можно реализовать в моделях типа:

models.JSONField(default=[])
Вернуться на верх