0
我注意到我的應用程序中發生了一件奇怪的事情。我只是無法弄清楚我正在做什麼系統性錯誤,這使得我的id字段被命名爲None。 我使用mongoengine和我所定義的文件,例如:Mongoengine - id字段被命名爲無
class TestDoc(Document):
myField = StringField()
secondField = StringField()
然後,當我實例類型TestDoc的Python對象,這是會發生什麼:
doc = models.TestDoc(myField="My field")
doc.save()
print doc.id
print "TESTING DOC: ", doc.__dict__
的結果是這樣的:
>> 516d4e3cd836195263fdd45b
>> TESTING DOC: {'_created': False, '_data': {None: ObjectId('516d4e3cd836195263fdd45b'), 'secondField': None, 'myField': 'My field'}, '_changed_fields': [], '_initialised': True}
我不明白爲什麼而不是名爲「id」的字段,我最終有一個奇怪的字段叫做None,其值爲實際的id。在數據庫中,一切似乎都沒有問題,文檔看起來沒問題,但只要我檢索一個文檔並希望處理該文檔或將其轉換爲json以便通過網絡發送,這會使我遇到問題。誰能幫忙?
有趣......謝謝!我知道_dict是一個內部的mongoengine,但即使我嘗試使用vars()來獲取這個文檔的屬性,結果仍然是一樣的。即使我手動嘗試指定:doc.id = ObjectId(),結果仍然是一個名爲None的字段。因此,如果我需要在不同的函數中使用該對象或將python(mongoengine)doc序列化爲json,是否有任何方法可以擺脫None,除了手動強制名爲** actual_id **或smth(導致如果我強制一個名爲id的字段,什麼都不會發生)? – Clara
在0.8中將會有一個包裝器來處理json轉換包裝'bson.json_util'和使用'doc.to_mongo()' – Ross
非常感謝,Ross! – Clara