• Как написать сериализатор?

    @VanBuren Автор вопроса
    После просмотра индийского разработчика всё стало ясно и просто. Для полей с Foreign Key надо задать атрибут related_name. Например, для Person в year и для Year в decadence
    year = models.ForeignKey(Year, on_delete=models.CASCADE, related_name='persons')
    decadence = models.ForeignKey(Years, on_delete=models.CASCADE, related_name='release')

    Затем в сериализаторе задом наперёд пишем сериализаторы начиная от Person и до Years. И переменные пишет как в related_name у переменных
    class PersonsSerializer(serializers.ModelSerializer):
        class Meta:
            model = Person
            fields = '__all__'
    
    
    class YearsSerializer(serializers.ModelSerializer):
        persons= PersonsSerializer(read_only=True, many=True)
    
        class Meta:
            model = Year
            fields = '__all__'
    
    
    
    class DecadenceSerializers(serializers.ModelSerializer):
        release = YearsSerializer(read_only=True, many=True)
    
        class Meta:
            model = Years
            fields = '__all__'

    А во view обращаемся к Years. И как я понял сериализатор сам начнёт присоединять по вложеным сеариализаторам
    class PersonsViewSet(viewsets.ModelViewSet):
        queryset = Years.objects.all()
        serializer_class = DecadenceSerializers
        http_method_names = ['get']

    Конечно он не выводил значения как ключ (а может так и нельзя), но на fronte уже будет проще. Надеюсь кому-нибудь поможет
    Ответ написан
    Комментировать