2012-05-30 4 views
1

MongoDB를 사용하여 기존 Django nonrel 응용 프로그램을 사용했습니다. 개체의 관련 필드가 ObjectID로 저장되는 것으로 보입니다. 예를 들어 OneToOneField에 의해 User 개체와 관련된 UserProfile 모델이 있습니다. 내가 장고 nonrel 프로젝트와 장고 - MongoDB의 엔진을 가져 오기 위해 자식 저장소를 사용 Heroku가에서 응용 프로그램을 전개mongoDB에 저장된 Django nonrel 관련 필드가 더 이상 ObjectID로 저장하지 않습니까?

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

:처럼 그리고 저장된 객체 데이터이었다. 필자가 사용한 pymongo 버전은 2.1.1입니다. 어떤 라이브러리를 업데이트했는지 확신 할 수 없기 때문에 관련 필드가 더 이상 ObjectId에 저장되지 않은 것으로 나타났습니다. 새 개체 데이터는 다음과 같이 저장됩니다.

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

데이터 형식이 일치하지 않아 오류가 발생합니다. 이전에 저장된 객체의 관련 객체를 가져올 수 없었을뿐만 아니라 ("DoesNotExist : UserProfile 일치하는 쿼리가 존재하지 않습니다."). 새로 저장된 오브젝트의 관련 오브젝트는 Piston에서도 가져올 수 없습니다.

requirements.txt의 리포지토리 URL에 리비전 지정자를 추가하려고했지만 이상한 운이 없었습니다.

무슨 일이 일어나고 있는지 아는 사람이 있습니까? 아마도 관련 데이터 ID 값을 수정하기 위해 mongoDB 데이터 업데이트를 수행해야합니까?

답변

1

이전에 어떤 버전을 사용하셨습니까? django-nonrel/djangotoolbox 버전도 알고 있어야합니다.

데이터를 수동으로 마이그레이션해야하는 것처럼 보일 수도 있지만 일시적인 변경 사항이 아닌 변경 사항이 적용된 버전을 확인하는 것이 좋습니다.

관련 문제