MongoDB / MongoEngine:/ [ObjectId(' 53f466e60ffa5927709972e8')中的ValidationError不是有效的ObjectId

时间:2014-08-20 09:41:11

标签: django mongodb mongoengine

如何从ObjectId获取实际的字符串ID(' 53f466e60ffa5927709972e8')?

这是导致错误的行

humans = [humanInstance[0].id]

更新:我做了

humans = [str(humanInstance[0].id)]

现在我得到了

['53f466e60ffa5927709972e8'] is not a valid ObjectId

为什么这不是有效的ObjectID,我该如何获得? :/

1 个答案:

答案 0 :(得分:0)

好消息是'53f466e60ffa5927709972e8'看起来像一个有效的ObjectId字符串:

  

有效的ObjectId(12字节二进制或24字符十六进制字符串)

src:PyMongo ObjectId

您可以转换为字符串,也可以通过以下方式转换为字符串:

"%s" % humanInstance[0]

或者获取列表使用理解:

["%s" human for human in humanInstance]

但是,您的错误是因为它期望humans是ObjectId或者可以转换为ObjectId(字符串很好)但是您提供了一个列表!

['53f466e60ffa5927709972e8'] is not a valid ObjectId

尝试设置humans = '53f466e60ffa5927709972e8'或将您的文档架构更改为ListField ObjectIdFieldsReferenceFields