首页 > 解决方案 > 如何在 django 特定表中保存前端(反应)JSON 数据?

问题描述

前端(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',
        },
    ]
}

我需要将它保存在 Django 的 SQLite 数据库中。

标签: pythondjango

解决方案


这是一个非常广泛的问题,并且在某种程度上取决于您应用程序的其余部分的设计和使用。

有几种方法可以解决这个问题,我将尝试简要说明:

  1. 如果您确实单独保存选择(相关的标准化 SO 问题),您将拥有一个1 to many模型,甚至可能是many to many模型。你可以在这里阅读更多关于它的信息

  2. 您可以将它们保存为问题模型(非规范化)中的单个(字符串)列,并在客户端连接数组,或者根据您提供的 json 在 django 中连接数组。您可以使用自定义字段进行此类操作

  3. 鉴于始终具有相同数量的选择(或至少包含,例如最多 4 个选择),您可能还可以为每个选择添加一列,再次使用自定义字段,甚至自定义模型保存方法

选择一种方法将影响您将数据返回给客户端的方式。此外,您应该考虑如何查找问题和选项,以及是否需要能够查找单个选项。您还考虑,如果您将来需要另一个模型,例如Answer与这些相同的选择相关的模型,您将遇到类似的问题,并且可能直截了当的方法是 1(归一化为QuestionsChoices)。


推荐阅读