Нерелевантные поля django, хранящиеся в mongoDB, больше не хранятся по ObjectID?

У меня было существующее нерелевантное приложение Django, использующее MongoDB. Казалось, что связанные поля объектов хранятся по ObjectID. Например, у меня есть модель UserProfile, которая относится к объектам User с помощью OneToOneField. И данные сохраненных объектов были такими:

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

Я развернул приложение на Heroku, которое использует репозиторий git для получения нерелевантных проектов django и django-mongodb-engine. Я использовал версию pymongo 2.1.1. Я не уверен, из-за обновления какой библиотеки я обнаружил, что связанные поля, похоже, больше не хранятся в ObjectId. Данные о новых объектах хранятся в виде:

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

Проблема в том, что это вызывает ошибки из-за несоответствия формата данных. Не только я не мог получить связанный объект из ранее сохраненных объектов (получение «DoesNotExist: запрос соответствия профиля пользователя не существует.»). Связанные объекты вновь сохраненных объектов также не могут быть извлечены Piston.

Я попытался добавить спецификатор ревизии в URL-адреса репозитория git в файле requirements.txt, но безуспешно, что странно.

Кто-нибудь знает о том, что творится? Возможно, мне нужно обновить данные mongoDB, чтобы исправить эти связанные значения идентификаторов данных?


person brian_wang    schedule 30.05.2012    source источник


Ответы (1)


Какую версию вы использовали ранее? - Также необходимо знать версии django-nonrel / djangotoolbox.

Похоже, вам, возможно, придется вручную перенести данные, но было бы хорошо зафиксировать ревизию, в которой произошло изменение, чтобы гарантировать, что это не временное изменение.

person Ross    schedule 30.05.2012