Django非相关tastypie mongodb嵌入式模型解码
我正在尝试将django non-rel与tastypie和mongodb一起使用。我有一个嵌入另一个模型对象列表的模型,但当我查询它时,EmbeddedModel如下所示 项目:项目对象 我试图破译同样的东西,但无法破译 以下是输出:Django非相关tastypie mongodb嵌入式模型解码,mongodb,tastypie,django-nonrel,Mongodb,Tastypie,Django Nonrel,我正在尝试将django non-rel与tastypie和mongodb一起使用。我有一个嵌入另一个模型对象列表的模型,但当我查询它时,EmbeddedModel如下所示 项目:项目对象 我试图破译同样的东西,但无法破译 以下是输出: {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"postItem": "[<Item: Item ob
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"postItem": "[<Item: Item object>, <Item: Item object>]", "title": "sdfdf"}]}
api.py
我的mongodb数据库中有如下文档:
有人能告诉我如何解码输出JSON中的嵌入模型数据吗?已经3天了,我自己无法解决,因此寻求帮助 只是为了将来的帮助。我在回答我自己的问题。我用脱水法解决了这个问题
def dehydrate_postItem(self,bundle):
results=list()
for i in xrange(len(bundle.obj.postItem)):
dictn={}
dictn['itemType']=bundle.obj.postItem[i].itemType
dictn['content']=bundle.obj.postItem[i].content
results.append(dictn)
return results
现在我得到了期望的输出:
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"postItem": [{"content": "sdfdsf", "itemType": "S"}, {"content": "fdsfdsfd", "itemType": "T"}], "title": "sdfdf"}]}
你问它是什么意思?调用api端点时的输出是什么?@dan klasson,而不是JSON序列化字符串。m在输出中得到一个class对象。我认为ListField是mongodb特有的。如果您知道如何将对象转换为列表,那么您可以使用deterheate方法进行转换:您可能还想查看下面的示例如何实现它:您应该能够访问bundle.data['positems'中的对象
{
"_id" : ObjectId("563dc4b808fcd877fb057ba6"),
"postItem" : [
{
"content" : "sdfdsf",
"itemType" : "S"
},
{
"content" : "fdsfdsfd",
"itemType" : "T"
}
],
"title" : "sdfdf"
}
def dehydrate_postItem(self,bundle):
results=list()
for i in xrange(len(bundle.obj.postItem)):
dictn={}
dictn['itemType']=bundle.obj.postItem[i].itemType
dictn['content']=bundle.obj.postItem[i].content
results.append(dictn)
return results
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"postItem": [{"content": "sdfdsf", "itemType": "S"}, {"content": "fdsfdsfd", "itemType": "T"}], "title": "sdfdf"}]}