经过一番艰辛,我设法将以前使用 sqlite 运行的 django 项目转换为使用 MongoDB 运行。这很好,除了我的旧版本有一个巨大的 initial_data.json 文件,现在在运行 django 的 syncdb 命令时无法使用新的数据库。
编辑:
这是 initial_data.json 文件的示例:
[{"pk":1,
"model": "vcb.dishtype",
"fields": {
"photo": "images/dishes/breakfast.jpg",
"name": "Breakfast"
}
},
{"pk":2,
"model": "vcb.dishtype",
"fields": {
"photo": "images/dishes/bread_and_pastry.jpg",
"name": "Bread and pastry"
}
}]
运行syncdb后,我得到:
DeserializationError: 安装夹具'C:\Users..\initial_data.json'时出现问题:u'pk'
这似乎是 MongoDB objectId 以及我如何定义 initial_data 文件的问题。我试图从文件中删除所有 pks 字段,但仍然是同样的错误。
编辑
我试着只放两个夹具,如果我不设置 pk,我会得到与上面相同的错误。如果我设置它,我会得到:
“DatabaseErroe:安装夹具'C:..\initial_data.json'时出现问题:无法加载vcb.dishtype(pk = 1):AutoField(默认主键)值必须是表示MongoDB上ObjectId的字符串(得到u'1'反而)”。
这是我在 django Site 上遇到的类似问题,在这个线程的帮助下解决了这个问题:Django MongoDB Engine error when runningtellsiteid
这引起了我的怀疑,即在此基础架构中设置固定装置的方法不同。也许 syncdb 不是要走的路,也许应该有一种转储?
我搜索了谷歌,似乎没有任何东西可以解决这个问题。我显然问错了问题。
我应该怎么做才能在我更改的项目中创建固定装置?
非常感谢,尼赞