2015-01-15 6 views
0

все!Представление иерархических данных в 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 } 

Я попытался подклассов Paginator, но я заметил, что я только разрешено отправлять простые данные в списке «объектов» , Есть ли способ изменить это поведение? Я что-то наблюдаю здесь?

Спасибо за ваше время.

ответ

1

Подобно тому, что Silvio упомянул в своем ответе, я узнал, что правильный путь, чтобы обеспечить уверенность отношений является использование 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

Это помогло мне! :). Также используйте поля. ToManyField («self», «children», full = True, null = True), если вы хотите, чтобы родительский элемент в корне, а затем дети в вашем ответе. – Deepak

Смежные вопросы