python - 如何在 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 数据库中。
- 如何保存
choice
字段? - 如果我分别制作 Question 和 Choice 模型,如何将 json 选项一一保存在选择表中?如何在前端取回这些数据?
- 我应该如何设计我的模型?我应该在我的 API 视图中写什么?
解决方案
这是一个非常广泛的问题,并且在某种程度上取决于您应用程序的其余部分的设计和使用。
有几种方法可以解决这个问题,我将尝试简要说明:
如果您确实单独保存选择(相关的标准化 SO 问题),您将拥有一个
1 to many
模型,甚至可能是many to many
模型。你可以在这里阅读更多关于它的信息您可以将它们保存为问题模型(非规范化)中的单个(字符串)列,并在客户端连接数组,或者根据您提供的 json 在 django 中连接数组。您可以使用自定义字段进行此类操作
鉴于始终具有相同数量的选择(或至少包含,例如最多 4 个选择),您可能还可以为每个选择添加一列,再次使用自定义字段,甚至自定义模型保存方法。
选择一种方法将影响您将数据返回给客户端的方式。此外,您应该考虑如何查找问题和选项,以及是否需要能够查找单个选项。您还考虑,如果您将来需要另一个模型,例如Answer
与这些相同的选择相关的模型,您将遇到类似的问题,并且可能直截了当的方法是 1(归一化为Questions
和Choices
)。
推荐阅读
- php - 具有混合 entry_type 的 CollectionType
- angular - 测试在构造函数上使用 observable 的方法
- typescript - 如何在 continueDialog 中引用当前对话框范围?
- python - 这个脚本的 re.search() 中的正则表达式有什么作用?
- c# - appcenter uitesting 无效的程序集路径
- kubernetes - Kubernetes:我的 PodSecurityPolicy 不起作用或配置错误
- css - 仅将 css 网格应用于第一行
- sql-server - SQL Server 使用触发器从插入的表(文件流)写入 .pdf 获取空文件
- firebase - Redux 重新匹配:注册时将状态设置为有效负载的状态
- flutter - Flutter Web View 新标签不起作用修复?