Двойной вложенный сериализатор

Есть 3 модели, которые связаны между собой последовательно (models.py):

class A(models.Model):
    titleA = models.CharField(max_length=200)


class B(models.Model):
    link = models.ForeignKey(A, on_delete=models.CASCADE, related_name='b')
    titleB = models.CharField(max_length=200)


class C(models.Model):
    link = models.ForeignKey(B, on_delete=models.CASCADE, related_name='c')
    titleC = models.CharField(max_length=200)

и сериализаторы (serializers.py):

class BSerializer(serializers.ModelSerializer):
    class Meta:
        model = B
        fields = (['titleB'])


class CSerializer(serializers.ModelSerializer):
    class Meta:
        model = C
        fields = (['titleC'])


class FinalSerializer(serializers.ModelSerializer):
    b_list = BSerializer(many=True, read_only=True)
    c_list = CSerializer(many=True, read_only=True)

    class Meta:
        model = A
        fields = ('titleA', 'b_list', 'c_list')

views.py:

class MyFinalView(ListAPIView):
    serializer_class = FinalSerializer
    
    def get_queryset(self):
        return A.objects.all()

и хочу получить на выходе:

[
    {
        "titleA": "it's A",
        "b_list": [
            {
                "titleB": "it's B", "c_list": [{"titleC" : "it's C"}]                
            }            
        ]
    }
]

но модель "С" в итоге пустая:

[
    {
        "titleA": "it's A",
        "b_list": [
            {
                "titleB": "it's B"]                
            }            
        ]
    }
]

Как добавить ещё один вложенный сериализатор С?


Ответы (1 шт):

Автор решения: Vadim Gazizov

Пока писал вопрос сам на него и ответил: serializers.py:

class BSerializer(serializers.ModelSerializer):
    c_list = CSerializer(many=True, read_only=True)
    class Meta:
        model = C
        fields = (['titleB', 'c_list'])


class CSerializer(serializers.ModelSerializer):
    class Meta:
        model = C
        fields = (['titleC'])


class FinalSerializer(serializers.ModelSerializer):
    b_list = BSerializer(many=True, read_only=True)

    class Meta:
        model = A
        fields = ('titleA', 'b_list')
→ Ссылка