Ale*_*.P. 2 python mongoengine
如果model包含ListField(db.ReferenceField))并且在查询名为to_json()ir 之后不将子转换为json,则将其保留为OID.有没有办法轻松地将(至少到X深层次)孩子转换为json?
"data": {
"articles": [],
"category": {
"_id": {
"$oid": "5224905453f0462f5458a724"
},
"children": [
{
"$oid": "5224905453f0462f5458a725"
},
{
"$oid": "5224905453f0462f5458a726"
},
{
"$oid": "5224905453f0462f5458a727"
},
{
"$oid": "5224905453f0462f5458a728"
}
],
...........
Run Code Online (Sandbox Code Playgroud)
而不是to_json()(你可以在文档中覆盖to_json),使用to_mongo()来获取一个SON对象,然后更新SON对象字段(就像一个dict对象),对于每个referencefield项,用item.to_mongo替换它们( ),最后返回bson.json_util.dumps(SON obj).
#override
def to_json(self):
data = self.to_mongo()
for i in range(len(data['children'])):
data['children'][i]= self.children[i].to_mongo()
return bson.json_util.dumps(data)
Run Code Online (Sandbox Code Playgroud)