【问题标题】:Django nonrel related fields stored in mongoDB doesn't store by ObjectIDs anymore?存储在 mongoDB 中的 Django nonrel 相关字段不再按 ObjectID 存储?
【发布时间】:2012-05-30 09:04:33
【问题描述】:

我有一个使用 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 值?

【问题讨论】:

    标签: mongodb pymongo django-nonrel


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2012-11-12
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多