2012-05-30 32 views
1

我有一個使用MongoDB的現有Django nonrel應用程序。 看起來對象的相關字段是由ObjectID存儲的。例如,我有一個UserProfile模型,它與OneToOneField的User對象相關。和存儲的對象的數據是這樣的:存儲在mongoDB中的Django nonrel相關字段不再通過ObjectID存儲?

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

我部署在Heroku它使用Git倉庫中獲取的Django nonrel項目和Django的MongoDB的發動機應用。我使用的pymongo版本是2.1.1。我不知道由於哪個庫的更新,我發現相關字段似乎不再被ObjectId存儲。新對象數據存儲如下:

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

問題是由於數據格式不一致導致錯誤。不僅我無法獲得以前存儲的對象的相關對象(獲取「DoesNotExist:UserProfile匹配查詢不存在」)。新保存的對象的相關對象也不能由Piston獲取。

我試着在requirements.txt中添加修訂說明符到git倉庫URL,但沒有運氣,這很奇怪。

有誰知道發生了什麼事?也許我必須做一個mongoDB數據更新來修復這些相關的數據id值?

回答

1

以前使用的是哪個版本? - 需要了解django-nonrel/djangotoolbox版本。

好像您可能需要手動遷移數據 - 但確定修改發生的位置以確保其不會發生短暫變化將是一件好事。