models.py 

#
from model_utils.models import TimeStampedModel
#
from django.db import models

#
class Hobby(TimeStampedModel):
    hobby = models.CharField(
        'Pasatiempo',
         max_length=50,
    ) 

    class Meta:
        verbose_name='Hobby'
        verbose_name_plural='Hobbies'

    def __str__(self):

        return self.hobby

#
class Person(TimeStampedModel):
    """  Modelo para registrar personas de una agenda  """

    full_name = models.CharField(
        'Nombres', 
        max_length=50,
    )
    job = models.CharField(
        'Trabajo', 
        max_length=30,
        blank=True
    )
    email = models.EmailField(
        blank=True, 
        null=True
    )
    phone = models.CharField(
        'telefono',
        max_length=15,
        blank=True,
    )

    hobbies = models.ManyToManyField(Hobby) 


    class Meta:
        verbose_name = 'Persona'
        verbose_name_plural = 'Personas'
    
    def __str__(self):
        return self.full_name



class Reunion(TimeStampedModel):
    """  Modelo para reunion  """

    persona = models.ForeignKey(
        Person, 
        on_delete=models.CASCADE
    )
    fecha = models.DateField()
    hora = models.TimeField()
    asunto = models.CharField(
        'Aunto de Reunion',
        max_length=100
    )
    

    class Meta:
        verbose_name = 'Reunion'
        verbose_name_plural = 'Reunion'
    
    def __str__(self):
        return self.asunto

serializers.py

class ReunionSerializer(serializers.ModelSerializer):

    class Meta:
        model=Reunion
        fields=(
            '__all__'
        )

views.py

class ReunionApilista(ListAPIView):

    # serializer_class= PersonaSerializer
    serializer_class= ReunionSerializer

    def get_queryset(self):

urls.py

    path(
        'api/reuniones/',
        views.ReunionApilista.as_view(),
        name=''
    ),

 

Modificando el serializer para  un modelo foreing key que nos arroge el resultado requerido

 

 serializers.py

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model=Person
        fields=(
            '__all__'
        )

class ReunionSerializer(serializers.ModelSerializer):

    persona= PersonSerializer()

    class Meta:
        model=Reunion
        fields=(
                'id',
                'fecha',
                'hora',
                'asunto',
                'persona',
        )
    

 

Modificando el serializer para  un modelo many to many que nos arroge el resultado requerido

 serializers.py

class ReunionSerializer(serializers.ModelSerializer):

    persona= PersonSerializer()

    class Meta:
        model=Reunion
        fields=(
                'id',
                'fecha',
                'hora',
                'asunto',
                'persona',
        )

views.py

class ReunionApilista(ListAPIView):

    # serializer_class= PersonaSerializer
    serializer_class= ReunionSerializer

    def get_queryset(self):
        return Reunion.objects.all()

urls.py

    path(
        'api/reuniones/',
        views.ReunionApilista.as_view(),
        name=''
    ),

Modificando Serializers para relacion Many to MAny

srializers.py


class HobbySerializer(serializers.ModelSerializer):

    class Meta:
        model=Hobby
        fields=('__all__')


class PersonaSerializer3(serializers.ModelSerializer):

    hobbies=HobbySerializer(many=True)

    class Meta:
        model=Person
        fields=(
            'id',
            'full_name',
            'job',
            'email',
            'phone',
            'hobbies',
            'created',
        )

 

views.py

class PersonApiLista(ListAPIView):

    #serializer_class= PersonaSerializer
    serializer_class= PersonaSerializer3

    def get_queryset(self):
        return Person.objects.all()

urls.py

    path(
        'api/personas/',
        views.PersonApiLista.as_view(),
        name=''
    ),