Mongoengine to_json确实将参考字段转换为KID

时间:2013-09-02 13:23:05

标签: 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"
    }
  ],
...........

2 个答案:

答案 0 :(得分:8)

而不是to_json()(你可以覆盖你文档中的to_json),使用to_mongo()来获取一个SON对象,然后更新SON对象字段(就像一个dict对象),为每个referencefield项替换它们.to_mongo(),最后返回bson.json_util.dumps(SON obj)。

#override
def to_json():
   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)

答案 1 :(得分:0)

目前不行,它将文档转换为extended json格式。如果要包装嵌入式文档,则必须将其作为完全自定义格式处理,并手动处理转换和解析。