2015-09-12 2 views
1

У меня есть модель Django следующим образом:Джанго рамки остальные сериализации на внешний ключ

class A(models.Model): 
    comments = models.CharField(max_length=200, blank=True) 

class B(models.Model): 
    name = models.CharField(max_length=50, blank=True) 

class c(models.Model): 
    a = models.ForeignKey(A, related_name='modelA') 
    b = models.ForeignKey(B, related_name='modelB') 

и у меня есть сериализаторы следующим образом:

class ASerializer(serializers.ModelSerializer): 

    class Meta: 
     model = A 

class CSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = C 

class BSerializer(serializers.ModelSerializer): 
    modelB = CSerializer(many=True, read_only=True) 

    class Meta: 
     model = B 

Б сериализатору работает следующим образом:

[ 
    { 
     "id": 2, 
     "modelB": [ 
      { 
       "id": 1, 
       "b": 2, 
       "a": 3 
      } 
     ] 
    } 
] 

Что мне нужно настроить, чтобы сделать его результатом следующим образом:

[ 
    { 
     "id": 2, 
     "modelB": [ 
      { 
       "id": 1, 
       "b": 2, 
       "a": [ 
        { 
         "id": 1, 
         "comments": "", 
        } 
       ] 
      } 
     ] 
    } 
] 

ответ

1

Изменить CSerializer следующим образом:

class CSerializer(serializers.ModelSerializer): 
    a = ASerializer() 

    class Meta: 
     model = C 
+0

но это отношение внешнего ключа, который является тем же, что я уже делаю. Я пытаюсь обратное отношение во втором – Abhishek

+0

@RogerFederer Вы проверили мой код? Это дает результат, который вы показали в качестве требуемого результата в своем вопросе. –

+1

ой, я так извиняюсь! я забыл удалить многие = True, и read_only .... он работает ... спасибо – Abhishek