1

我有一个使用 MongoDB 的现有 Django nonrel 应用程序。似乎对象的相关字段是由 ObjectID 存储的。例如,我有一个 UserProfile 模型,它与 OneToOneField 的用户对象相关。存储的对象数据如下:

{
    "_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 值?

4

1 回答 1

1

你之前用的是什么版本?- 还需要了解 django-nonrel / djangotoolbox 版本。

似乎您可能必须手动迁移数据 - 但最好确定更改发生的版本以确保其不是暂时的更改。

于 2012-05-30T09:35:07.483 回答