【问题标题】:parse and store json data to django model解析 json 数据并将其存储到 django 模型
【发布时间】:2020-10-04 01:16:40
【问题描述】:

我可以在 django 中使用视图内的请求调用 api,以便以字典格式获取数据响应,如下所示:

{'name': 'John', 'Value': [2, 4, 3]}

我现在对如何将这些数据加载到我现有的模式感到困惑:

class Table_name(models.Model):
    person_name = models.CharField(max_length=100)
    person_value = models.CharField(max_length=30)

有人可以建议吗?

谢谢

【问题讨论】:

    标签: json django django-models


    【解决方案1】:

    如果您打算为应用中的多个视图执行此操作,则应考虑使用 Django REST framework 并编写序列化程序以将 JSON 结构链接到模型。

    如果您不想这样,只需将所有转换逻辑放在您的视图中即可:

    def view(request):
        # I assume your JSON data is in a dict called `data`:
        tablename = Table_name(person_name=data['name'],
                               person_value=str(data['Value']))
        if tablename.is_valid():
            tablename.save()
            return ... # response if succeeded
        else:
            return ... # response if failed
    

    不清楚你想如何将Value中的列表转换成字符串,所以我刚才在上面的例子中使用了str()

    请注意,您可能不相信 API 会为您提供按预期格式化的数据。如果是这样,请确保生成您的字典不会引发或做任何意外,无论输入数据是什么。

    最后,我建议您阅读 this 了解如何为您的课程命名(TableNameTable_name 更普遍接受)。

    【讨论】:

    • 谢谢 mimo.. 我必须遍历 json 对象才能将数据导入模型,因为我将有大约 300k 行.. 但是这是每天一次的活动,我只有一个视图这将得到这个数据。我可以这样做吗?
    • def view(request): for item in data: tablename = Table_name(person_name=item['name'], person_value=str(item['Value'])) if tablename.is_valid(): tablename.save() return ... # response if succeeded else: return ... # response if failed
    • 或者您会建议一种更好的方法将数据推送到模型中,而不是每条记录。请指教。此外,我将确保通读命名约定并按照建议进行操作。
    猜你喜欢
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2019-12-05
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多