2015-01-15 2 views
0

모두!Tastypie의 계층 적 데이터 표현

저는 장고 (및 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