經過很多困難之後,我設法將之前使用sqlite運行的我的django項目轉換爲使用MongoDB運行。 這很好,除了我的舊版本有一個大規模的initial_data.json文件,現在無法在運行django的syncdb命令時使用新的數據庫。用於使用MongoDB運行的django的initial_data
編輯:
這是initial_data.json文件的例子:
[{"pk":1,
"model": "vcb.dishtype",
"fields": {
"photo": "images/dishes/breakfast.jpg",
"name": "Breakfast"
}
},
{"pk":2,
"model": "vcb.dishtype",
"fields": {
"photo": "images/dishes/bread_and_pastry.jpg",
"name": "Bread and pastry"
}
}]
和運行執行syncdb後我得到:
DeserializationError: Problem installing fixture 'C:\Users..\initial_data.json' : u'pk'
這似乎是一個MongoDB objectId問題以及我如何定義initial_data文件。 我試圖從文件中刪除所有的pks字段,但仍然是相同的錯誤。
編輯
我試圖把只是兩場比賽,如果我不設置PK,我得到了同樣的錯誤如上。如果我把它,我得到:
"DatabaseErroe: Problem installing fixture 'C:..\initial_data.json': could not load vcb.dishtype(pk=1): AutoField (default primary key) values must be strings representing an ObjectId on MongoDB (got u'1' instead)".
這是一個類似問題,我與Django的網站,這是與該線程的幫助下解決了:Django MongoDB Engine error when running tellsiteid
這引起了我的懷疑,有一個不同的方法來設置這個基礎設施中的燈具。也許syncdb不是要走的路,而且應該有一種轉儲可能?
我搜索谷歌,並沒有什麼似乎解決這個問題。我顯然在問錯誤的問題。
我應該怎麼做,在我修改的項目中創建燈具?
非常感謝, Nitzan
你嘗試了什麼,你得到了什麼錯誤信息等等?請給出更具體的上下文,這樣我們可以幫助你。 – favoretti
@favoretti我編輯了我的帖子。 Tnx爲你的時間 – nitzanwe
我看到的一件事,與Django的initial_data文件不同,django應該根據自己的文檔(https://docs.djangoproject.com/en/1.5/howto/initial-data/)吞下的是你的JSON對象不是一個列表。 – favoretti