2015-01-15 73 views
0

everyone!在Tastypie中表示分層數據

我是Django(和Tastypie)的新手,我在分層數據方面遇到了一些問題。在我的項目,我們有幾個類別的,通過下面的模型表示:

class Category(MPPTModel): 
    desc = models.CharField(max_length=200) 
    parent = TreeForeignKey('self', null=True, related_name='children') 

爲服務器迴應,我想類似的東西(包含所有類別及其各個分類,等一個JSON ):

[  
{ 
    "id" : 0, 
    "decription" : "category1", 
    "categories" : [ 
         { 
         "id" : 1, 
         "description" : "category2", 
         "categories" : [ ... ] 
         }, 
         ... 
        ] 
    }, 
... 
] 

的ResourceModel:

class CategoryResource(ModelResource): 
    resource_name = 'listCategories' 
    queryset = Category.objects.filter.all() 

    def alter_list_data_to_serialize(self, request, data): 
     return { 'status' : 'success', 'categories' : data } 

我試過子類分頁程序,但我注意到,我只允許發送的「對象」名單內明文數據。有什麼方法可以修改這種行爲嗎?我在這裏監督什麼?

謝謝你的時間。

回答

1

什麼貝盧斯科尼在他的答覆中提到的類似,我發現,提供自我關係的正確方法是使用ToOneField:

class Category(MPTTModel): 
    descr = models.CharField(max_length=200) 
    parent = TreeForeignField('self', null=True, related_name='children') 

class CategoryResource(ModelResource): 
    category = fields.ToOneField('self', 'parent', full=True, null=True) 

    # Rest of your Resource class 

我希望這個答案對別人有用!

+0

它幫助了我! :)。如果你想讓你的父母在根目錄下,並且在你的回覆中有孩子,你也可以使用fields.ToManyField('self','children',full = True,null = True)。 – Deepak 2017-10-05 16:06:18