Как сохранить данные JSON внешнего интерфейса (реагировать) в конкретной таблице django? - PullRequest
0 голосов
/ 12 марта 2019

Frontend (React) дает мне этот тип данных json:

{
    "question": [{
            "id": '0',
            "title": 'Click to write the question text',
            "choice": ['Click to write Choice 1', 'Click to write Choice 2', 'Click to write Choice 3'],
            "answerType": 'singleAnswer',
            "answerStyle": 'vertical',
        },
        {
            "id": '1',
            "title": 'Click to write the question text',
            "choice": ['Click to write Choice 1', 'Click to write Choice 2', 'Click to write Choice 3'],
            "answerType": 'singleAnswer',
            "answerStyle": 'horizontal',
        },
        {
            "id": '2',
            "title": 'Click to write the question text',
            "choice": ['Click to write Choice 1', 'Click to write Choice 2', 'Click to write Choice 3'],
            "answerType": 'multipleAnswer',
            "answerStyle": 'horizontal',
        },
    ]
}

Мне нужно сохранить его в моей базе данных SQLite в Django.

  • Как сохранитьchoice поле?
  • Если я создаю модели «Вопрос» и «Выбор» отдельно, как мне сохранить выбор json по одному в таблице выбора?Как вернуть эти данные во внешний интерфейс?
  • Как мне спроектировать мою модель?Что мне нужно написать в моем представлении API?

1 Ответ

0 голосов
/ 12 марта 2019

Это очень широкий вопрос, и он в некоторой степени зависит от дизайна и использования остальной части вашего приложения.

Существует несколько подходов к этому вопросу, которые я постараюсь кратко рассмотреть:

  1. Если вы сохраните варианты отдельно ( связанный вопрос нормализации SO ), у вас будет модель 1 to many или, возможно, даже модель many to many.Вы можете прочитать больше об этом здесь

  2. Вы можете сохранить их как один (строковый) столбец в модели Вопроса (денормализация) и объединить массив либо нана стороне клиента или, учитывая предоставленный вами json, в django.Вы можете делать такие манипуляции, используя настраиваемые поля

  3. Учитывая, что выбор всегда один и тот же (или, по крайней мере, содержит, скажем, максимум 4 варианта), вы также можете получитьне нужно добавлять столбец для каждого выбора, снова использовать пользовательские поля или даже пользовательский метод сохранения модели .

Выбор подхода повлияет на способ возврата данных обратноклиент.Кроме того, вы должны подумать о том, как вы будете искать вопрос и выбор, и нужно ли вам найти единый выбор или нет.Вы также считаете, что если вам понадобится другая модель в будущем, например, Answer, которая связывает те же варианты, у вас возникнут аналогичные проблемы, и, вероятно, прямой подход будет 1 (нормализация в Questions и Choices).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...