2015-11-07 61 views
0

我試圖使用Django非相對與tastypie和MongoDB。我有它嵌入另一個模型對象的名單,但是當我查詢它EmbeddedModel就這樣產生了Django的非相對tastypie MongoDB的embeddedmodel解碼

模型項目:項目對象

我試圖解碼相同,但無法做到這一點。

這裏是輸出:

{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"postItem": "[<Item: Item object>, <Item: Item object>]", "title": "sdfdf"}]} 

models.py

from django.db import models 

from djangotoolbox.fields import ListField,EmbeddedModelField 

class Item(models.Model): 
    itemType=models.CharField(max_length=1,null=False) 
    content=models.TextField() 
class Post(models.Model): 
    title = models.CharField(max_length=100,null=False) 
    postItem=ListField(EmbeddedModelField('Item')) 

api.py

from django.conf import settings 
from django.contrib.auth.models import User 

from tastypie import fields 
from tastypie.bundle import Bundle 
from django.db import models 


class ScreenFeed(ModelResource): 
    class Meta: 
     queryset=Post.objects.all() 
     resource_name='post' 
     fields=["title","postItem"] 
     include_resource_uri=False 

我有文件類似下面在我的MongoDB數據庫:

{ 
    "_id" : ObjectId("563dc4b808fcd877fb057ba6"), 
    "postItem" : [ 
     { 
      "content" : "sdfdsf", 
      "itemType" : "S" 
     }, 
     { 
      "content" : "fdsfdsfd", 
      "itemType" : "T" 
     } 
    ], 
    "title" : "sdfdf" 
} 

任何人都可以請建議我怎麼可以在輸出JSON它一直3天解碼我嵌入模型數據,我不能獨自解決這個問題,以便尋找一些幫助?

+0

你的意思是,當你查詢呢?當您調用api端點時,輸出是什麼? –

+0

@ dan-klasson而不是JSON序列化的string.m在輸出中獲取一個類對象 –

+1

我認爲它的ListField特定於mongodb。如果您知道如何將對象轉換爲列表,您可以在'dehydrate'方法中執行此操作:http://django-tastypie.readthedocs.org/en/latest/resources.html#id2 –

回答

0

只是爲了將來的幫助,我正在回答我自己的問題。通過使用脫水方法,我解決了它。

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"}]}