1

MongoDB を使用した既存の Django nonrel アプリケーションがありました。オブジェクトの関連フィールドは ObjectID によって格納されているようです。たとえば、OneToOneField によって User オブジェクトに関連する UserProfile モデルがあります。そして、保存されたオブジェクトデータは次のようでした:

{
    "_id": {
        "$oid": "4f67540040e0460001000001"
    },
    "user_id": {
        "$oid": "4f67540040e0460001000000"
    },
    ....
}

gitリポジトリを使用してdjango nonrelプロジェクトとdjango-mongodb-engineをフェッチするアプリケーションをHerokuにデプロイしました。私が使用したpymongoのバージョンは2.1.1です。どのライブラリが更新されたのかわかりませんが、関連するフィールドが ObjectId に保存されていないようです。新しいオブジェクト データは次のように保存されます。

{
    "_id": {
        "$oid": "4f67540040e0460001000001"
    },
    "user_id": "4f67540040e0460001000000",
    ....
}

問題は、データ形式の不一致によりエラーが発生することです。以前に保存されたオブジェクトの関連オブジェクトを取得できなかっただけではありません (「DoesNotExist: UserProfile 一致するクエリが存在しません」を取得)。新しく保存されたオブジェクトの関連オブジェクトも、Piston によって取得できませんでした。

requirements.txt の git リポジトリ URL にリビジョン指定子を追加しようとしましたが、うまくいきませんでした。これは奇妙です。

何が起こっていたのか知​​っている人はいますか?おそらく、これらの関連するデータ ID 値を修正するために mongoDB データの更新を行う必要がありますか?

4

1 に答える 1

1

以前使用していたバージョンは何ですか?- django-nonrel / djangotoolbox のバージョンも知っておく必要があります。

データを手動で移行する必要があるようですが、一時的な変更ではないことを確認するために、変更が発生したリビジョンを特定することをお勧めします。

于 2012-05-30T09:35:07.483 に答える