【问题标题】:Populate model(database) with json data in django在 django 中使用 json 数据填充模型(数据库)
【发布时间】:2014-05-05 03:23:58
【问题描述】:

我阅读了有关反序列化程序的信息,但在这里找不到我的方式。我有两个应用程序,一个用于存储我的数据(抓取的数据),另一个用于显示当前/新数据。我在这两个应用程序中有相同的模型。所以我将 app A 的模型转换为 json ,现在我想用那个 json 填充 app B 的模型。怎么可能做到?不过我不喜欢使用 django REST 框架。

所以我做了 python manage.py dumpdata app_name > somefile.json

如何使用 somefile.json 的内容填充模型 B 的字段?

【问题讨论】:

    标签: json django django-models


    【解决方案1】:

    您可以使用模型序列化程序。假设你有一个模型 MyModel,为这个模型创建一个 serailizer,

    class MyModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = MyModel
    

    您必须创建一个列表,将列表中的每个元素作为 MyModel 实例数据的字典。 python 中的 JSON 数据基本上是一个字典。因此,列表中的每个元素都是模型每个唯一实例的字典(JSON 数据)。

    列表可能如下所示:

    [
        {
            "pk": "1",
            "field_1": "data_1",
            "field_2": "data_2",
            .....
        },
        {
            "pk": "2",
            "field_1": "data_1",
            "field_2": "data_2",
            .....
        },
        ...
    ]
    

    现在将包含 MyModel 的 json 数据的列表传递给序列化程序。如果 json 数据有效,则序列化程序会将数据反序列化为 MyModel 实例。然后你可以简单地保存它们。

    serializer = MyModelSerializer(data=json_data, many=True)
    if serializer.is_valid():
        serializer.save()  # `.save()` will be called on each deserialized instance
    

    【讨论】:

    • 这似乎在 Django 1.11 (serializers.ModelSerializer DNE) 中被弃用了
    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 2016-01-01
    • 2021-04-07
    • 2014-06-11
    • 2020-07-23
    • 2015-04-26
    相关资源
    最近更新 更多