使用MongoDB运行django的初始_数据
在经历了许多困难之后,我成功地将我的django项目(以前使用sqlite运行)转换为使用MongoDB运行。 这很好,除了我的旧版本有一个庞大的初始_data.json文件之外,它现在在运行django的syncdb命令时无法与新数据库一起工作 编辑: 这是初始_data.json文件的一个示例:使用MongoDB运行django的初始_数据,django,mongodb,python-2.7,django-mongodb-engine,Django,Mongodb,Python 2.7,Django Mongodb Engine,在经历了许多困难之后,我成功地将我的django项目(以前使用sqlite运行)转换为使用MongoDB运行。 这很好,除了我的旧版本有一个庞大的初始_data.json文件之外,它现在在运行django的syncdb命令时无法与新数据库一起工作 编辑: 这是初始_data.json文件的一个示例: [{"pk":1, "model": "vcb.dishtype", "fields": { "photo": "images/dishes/breakfast.jpg",
[{"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后,我得到:
反序列化错误:安装夹具时出现问题
'C:\Users..\initial_data.json':u'pk'
MongoDB objectId和我如何定义初始_数据文件似乎有问题。
我试图从文件中删除所有pks字段,但仍然出现相同的错误
编辑
我试着只放两个装置,如果我不设置pk,我会得到与上面相同的错误。如果我设置了它,我会得到:
“DatabaseErrore:安装fixture'C:..\initial_data.json'时出现问题:
无法加载vcb.dishtype(pk=1):自动字段(默认主键)
值必须是表示MongoDB上ObjectId的字符串(得到u'1'
而是"
这是我在django站点上遇到的一个类似问题,通过这个线程解决了这个问题:
这引起了我的怀疑,在这个基础设施中有一种不同的方式来设置设备。也许syncdb不是一个好办法,也许应该有一种转储
我搜索过谷歌,但似乎没有什么能解决这个问题。我显然问错了问题
我应该怎么做,在我修改过的项目中创建装置
非常感谢,
Nitzan从您的错误消息中,我假设您正在使用 您的
pk
值必须是有效的objectID,请尝试使用以下值:
- “000000000000000000000001”
- “000000000000000000000002”
- 等
>>> from bson.objectid import ObjectId
>>> ObjectId()
> ObjectId('52af59bac38f8420734d064d')
>>> ObjectId('000000000000000000000001')
> ObjectId('000000000000000000000001')
>>> ObjectId('bad')
*error*
您尝试了什么,收到了什么错误消息,等等?请提供更具体的上下文,这样我们可能会帮助您。@favoretti我已经编辑了我的帖子。Tnx对于您的时间我看到的一件事,与django根据自己的文档()应该吞下的JSON初始_数据文件不同的是,您的JSON对象不是一个列表。它是一个列表,我在文件末尾有“[”和“]”。我只是没有复制它。如果你从简单开始,在你的初始_数据中只提供一个或两个条目,那么它会起作用吗?只是想看看这是一个特定条目的反序列化错误还是一般的错误。