来自 json 的 Django 模型实例化

Django Model instanciation from json

我已经使用 manage.py dumpdata some_app.SomeModel > some_app_SomeModel.json 下载了多个模型的数据,并且正在尝试以编程方式加载文件,如下所示:

with open('some_app_SomeModel.json', encoding='utf-8') as data_file:
    json_data = json.loads(data_file.read())

    for model_data in json_data:
        model_data = model_data['fields']
        SomeModel.objects.create(**model_data)

不幸的是,这对外键字段不起作用:id 值未转换为相应的模型实例,我得到 ValueError: Cannot assign "1": "SomeModel.fk_field" must be a "FK_Model" instance.,其中“1”是 fk 字段的 json 值.

如何简单地解决这个问题?

如果fk_field,那么你可以分配给fk_field<b>_id</b>,因此你可以将其重写为:

with open('some_app_SomeModel.json', encoding='utf-8') as data_file:
    json_data = json.loads(data_file.read())

    for model_data in json_data:
        model_data = model_data['fields']
        <strong>model_data['fk_field_id'] = model_data.pop('fk_field')</strong>
        SomeModel.objects.create(**model_data)

请注意,您的项目应包含主键,否则不能说这些将 link 到 JSON 文件中具有主键的对象。