2016-06-08 6 views
3

рассмотрит ниже предположительные модели:Как сериализовать рекурсивные отношения с самим собой в Django REST Framework?

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    sub_category = models.ManyToManyField(u'self', null=True, blank=True, 
              through=u'SubCategory', symmetrical=False) 

    def __unicode__(self): 
     return self.name 


class SubCategory(models.Model): 
    from_category = models.ForeignKey(Category, related_name=u'from_category') 
    to_category = models.ForeignKey(Category, related_name=u'to_category') 

    def __unicode__(self): 
     return self.from_category.name 

Как мы могли сериализатор сериализовать отношения рекурсии так:

{ 
    "id": 1, 
    "name": "a", 
    "sub_category": [ 
     { 
      "id": 2, 
      "name": "b", 
      "sub_category": [ 
       { 
        "id": 3, 
        "name": "c", 
        "sub_category": [ 
         { 
          "id": 4, 
          "name": "d", 
          "sub_category": [ 
           ... 
          ], 
         }, 
         ... 
        ], 
       }, 
       ... 
      ] 
     }, 
     ... 
    ] 

} 

ответ

0

Я бы попробовать djangorestframework-recursive пакет, доступные здесь: https://github.com/heywbj/django-rest-framework-recursive

+0

Когда я использовал этот модуль, я получил RuntimeError со значением исключения: 'максимальная глубина рекурсии превышена в __instancecheck__' –

+0

Право - так что у вас, вероятно, есть цикл за один o f отношения. Вам нужно выяснить, как вы хотите, чтобы представление справилось с этим. –

+0

спасибо. вы должны встроить это рекурсивное поле в DRF –

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