Django建模并将JSON输入作为表加载

2024-04-19 23:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

必须制作django模型并获取一个JSON文件来为学生和班级显示webapp提供所有数据。JSON文件将驱动我的建模,它看起来像这样(被截断为几个数据点)。。。在

{
"students": [
        {
            "first": "John",
            "last": "Smith",
            "email": "johnsmith@mailinator.com",
            "studentClasses": [
                    {
                        "id": 1,
                        "grade": 4
                    },
                    {
                        "id": 2,
                        "grade": 3
                    },
             ]},
              {...#truncated data, this follows with more students

"classes": {
        "1": "Math 101",
        "2": "English 101",
        "3": "Science 101",
        #total 8 classes declared, truncated
        }

我的数据模型是。。。。。在

^{pr2}$

以下是我的问题。。。在

(1)我如何在StudentClass中建模:[{id:1,等级:4}]从JSON文件中键入关系输入并填充我的数据库表?似乎我必须声明序列化程序,为什么以及如何声明?在

(2)被类表中的ID和students表中的不ID搞混了,在建模时是否需要显式地声明主键,而不是在students模型中声明ID?在

(3)我似乎可以用“python”加载表管理.py加载数据myjsonfile.json文件“(这就够了吗?”?在

(4)我是否需要一个称为“studentClasses”的第三个模型来记录哪个学生在该课程上了什么课和成绩? 提前谢谢你的帮助。在


Tags: 文件数据django模型idjson声明建模
2条回答

您需要向student添加一个student_类字段,可以使用jsonpickle将其序列化。有了这个字段,我认为您不需要任何外键……您所说的是“加载表”——这似乎也是您感到困惑的地方。正如您的建模代码所示,django中的模型由类组成,因此,要使用模型(以及其中的数据),您需要导入这些类,例如“from models import Student,classes”。在

对我来说,最好是编写更新数据库的短函数(在单独的文件中):

import json
from app.models import Student, Classes

data = json.loads('fixtures.json')
for student in data['students']:
    # parse student; save classes and student objects

print('done')

(2)我认为你应该使用“多对多”关系,而不是“一对多”

相关问题 更多 >