Python 在django中序列化mongodb查询对象以将其解析为模板

Python 在django中序列化mongodb查询对象以将其解析为模板,python,django,mongodb,mongoengine,bson,Python,Django,Mongodb,Mongoengine,Bson,我想将django ORM返回的mogodb对象序列化为json,以便直接将其传递给模板 这是我的mongodb文档:公司 { "_id" : ObjectId("52d983139dbc7913f25c9e05"), "type" : "R", "users" : [{ "name" : "praveen", "pwd" : "hola", "draft_items" : [

我想将django ORM返回的mogodb对象序列化为json,以便直接将其传递给模板

这是我的mongodb文档:公司

{
    "_id" : ObjectId("52d983139dbc7913f25c9e05"),
    "type" : "R",
    "users" : [{    "name" : "praveen",
                    "pwd" : "hola",
                    "draft_items" : [
                     {
                         "name" : "DICLOP",
                         "manu" : "RANBAXY",
                     }
             }],


}
我尝试了这一点,但我只得到了密钥,而没有得到值:

>>> from bson.json_util import dumps
>>> x = firm.objects.get()
>>> dumps(x)
["id", "name", "type", "users"]
我也试过了

    >>> from bson import json_util
    >>> import json

    >>> json.dumps(x,default=json_util.default)

    Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
  File "/usr/local/lib/python2.7/dist-packages/pymongo-2.6.3-py2.7-linux-i686.egg/bson/json_util.py", line 220, in default
    raise TypeError("%r is not JSON serializable" % obj)
TypeError: <firm: firm object> is not JSON serializable
>>来自bson导入json\u util
>>>导入json
>>>dumps(x,default=json_util.default)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/json/_init__.py”,第238行,转储
**千瓦)。编码(obj)
文件“/usr/lib/python2.7/json/encoder.py”,第201行,在encode中
chunks=self.iterencode(o,\u one\u shot=True)
iterencode中的文件“/usr/lib/python2.7/json/encoder.py”,第264行
返回_iterencode(o,0)
默认情况下,文件“/usr/local/lib/python2.7/dist packages/pymongo-2.6.3-py2.7-linux-i686.egg/bson/json_util.py”,第220行
raise TypeError(“%r”不是JSON可序列化的“%obj”)
TypeError:不可序列化JSON

您应该在queryset或文档上使用
来创建json
,例如:

MyDoc.objects().to_json()
myDoc.to_json()
可以使用dir()查看obj属性。 您可以使用to_json func来序列化mongodb对象

>>> x = firm.objects.get(_id=ObjectId("52d983139dbc7913f25c9e05"))
>>> print x.to_json()

用于您的解决方案。它应该对你有帮助。谢谢你的mongoengine。当我尝试下面的firm.objects(uuu raw_uu={uu id':x}).only('whistalers')时,我得到了结果,但当我尝试firm.objects(uu raw_uuu={uid':x})only('whistalers')。only('whistalers')。对于_json(),它给出了一个空的dict'[{“whistalers”:[{}]}]'