2015-08-06 2 views
3

Я использовал django-mptt для хранения иерархии категорий, и мне нужно сериализовать все данные категории в нижнем формате.Сериализация модели Django-mptt с использованием рамки Django REST

{ 
      "id": 1, 
      "name": "FOOD" 
      "children": [ 
       { 
        "id": 6, 
        "name": "PIZZA" 
       }, 
       { 
        "id": 7, 
        "name": "BURGER" 
       } 
      ], 

     }, 
     { 
      "id": 2, 
      "name": "ALCOHOL" 
      "children": [ 
       { 
        "id": 8, 
        "name": "WINE" 
       }, 
       { 
        "id": 9, 
        "name": "VODKA" 
       } 
      ], 

     }, 
} 

Я использую рамки django REST ModelViewset и сериализаторы. Как это сделать?

+1

Возможный дубликат http://stackoverflow.com/questions/21112302/how-to-serialize-hierarchical-relationship-in-django-rest. взгляните на предложенный там ответ. обратите внимание, что это DRF2, поэтому, возможно, его нужно будет скорректировать для DRF3. – miki725

+0

Спасибо, я пробовал это, но не получилось. Так вы можете помочь мне дальше? – Jay

+0

Я не знаю никакой дополнительной информации, чем то, что находится на этой странице. Прости – miki725

ответ

5

Этот ответ уже слишком давно, но для других, используйте RecursiveField от djangorestframework-recursive package.

я был в состоянии сделать это так:

class MyModelRecursiveSerializer(serializers.Serializer): 
    # your other fields 
    children = serializers.ListField(read_only=True, source='your_get_children_method', child=RecursiveField()) 

Просто надо знать, что это потенциально дорого, так что вы можете только использовать это для моделей, чьи записи не изменяются, что часто и кэшировать результаты ,