2011-02-17 54 views
2

是否有可能在使用mongodb引擎保存到mongodb的django模型中創建自定義ObjectId?我試圖做到這一點,傳遞我想要的ObjectId類型的字符串,例如Flight(_id = ObjectId(myid)),但這會給我一個錯誤,說明該字符串不是一個有效的ID。是否有可能用自定義ID覆蓋ID?還有什麼地方可以閱讀這些信息或創建ID的規則?Mongodb引擎和Django創建自定義ObjectId

例如:

File "/usr/local/lib/python2.7/dist-packages/bson/objectid.py", line 172, in __validate raise InvalidId("%s is not a valid ObjectId" % oid) InvalidId: short_profile_4fcad5e8e5095f5a4f000000 is not a valid ObjectId

+0

什麼是確切的錯誤嗎? – 2011-02-17 12:12:45

回答

0

爲了確保您可以自定義對象ID,檢查對象ID documentation對於這一點,但我不unsdestand FOT你需要什麼。

而不是ObjectId你可以使用任何你想要的類型。因此,您可以創建_id字符串並插入任何strting值而不是mongo ObjectId。但是您的自定義_id對於集合中的每個成員都必須是唯一的。如果集合在_id上有一個索引,默認情況下這是強制執行的。

從文檔

Although _id values can be of any type, a special BSON datatype is provided for object ids. This type is a 12-byte binary value designed to have a reasonably high probability of being unique when allocated. All of the officially-supported MongoDB drivers use this type by default for _id values. Also, the Mongo database itself uses this type when assigning _id values on inserts where no _id value is present.

+1

所以我真正想要的是設置一個字符串作爲我的_id,但我不斷收到此錯誤:AutoField(默認主鍵)值必須是代表MongoDB上的ObjectId的字符串(代替u'ryanair-DU ...)任何想法可能是錯誤的?我的模型有_id = models.CharField(db_index = True) – gomesr 2011-02-17 18:57:08