我使用MongoDB存在一个现有的Django nonrel应用程序。 看来对象的相关字段由ObjectID存储。例如,我有一个UserTrofile模型,它与OneToOneField的User对象相关。存储的对象数据如下:
{
"_id": {
"$oid": "4f67540040e0460001000001"
},
"user_id": {
"$oid": "4f67540040e0460001000000"
},
....
}
我在Heroku上部署了应用程序,它使用git存储库来获取django nonrel项目和django-mongodb-engine。我使用的pymongo版本是2.1.1。我不确定因为更新了哪个库,我发现相关字段似乎不再由ObjectId存储。新对象数据存储如下:
{
"_id": {
"$oid": "4f67540040e0460001000001"
},
"user_id": "4f67540040e0460001000000",
....
}
问题是由于数据格式不一致导致错误。不仅我无法获得先前存储的对象的相关对象(获得“DoesNotExist:UserProfile匹配查询不存在。”)。 Piston也无法获取新保存对象的相关对象。
我尝试将版本说明符添加到requirements.txt中的git存储库URL但没有运气,这很奇怪。
有谁知道发生了什么事?也许我必须做一个mongoDB数据更新来修复那些相关的数据id值?
答案 0 :(得分:1)
您之前使用的是哪个版本? - 需要知道django-nonrel / djangotoolbox版本。
似乎您可能需要手动迁移数据 - 但最好确定发生更改的修订版本以确保其不是瞬态更改。