使用MongoDB运行django的初始_数据

使用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",

在经历了许多困难之后,我成功地将我的django项目(以前使用sqlite运行)转换为使用MongoDB运行。 这很好,除了我的旧版本有一个庞大的初始_data.json文件之外,它现在在运行django的syncdb命令时无法与新数据库一起工作

编辑:

这是初始_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后,我得到:

反序列化错误:安装夹具时出现问题 '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”
您可以获取ObjectID或检查是否有正确的值:

>>> from bson.objectid import ObjectId
>>> ObjectId()
  > ObjectId('52af59bac38f8420734d064d')
>>> ObjectId('000000000000000000000001')
  > ObjectId('000000000000000000000001')
>>> ObjectId('bad')
*error*

您尝试了什么,收到了什么错误消息,等等?请提供更具体的上下文,这样我们可能会帮助您。@favoretti我已经编辑了我的帖子。Tnx对于您的时间我看到的一件事,与django根据自己的文档()应该吞下的JSON初始_数据文件不同的是,您的JSON对象不是一个列表。它是一个列表,我在文件末尾有“[”和“]”。我只是没有复制它。如果你从简单开始,在你的初始_数据中只提供一个或两个条目,那么它会起作用吗?只是想看看这是一个特定条目的反序列化错误还是一般的错误。