2

Je souhaite configurer une API reposante sur mon site. J'ai utilisé django-rest-framework. Lorsque j'obtiens un objet de la base de données, il n'affiche pas d'objet associé.Pourquoi django-rest-framework n'affiche pas les données OneToOneField - django

Ci-dessous extrait est mon premier modèle (modèle parent):

class Profile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile',on_delete=models.CASCADE) 
    name = models.CharField(max_length=30) 
    family = models.CharField(max_length=50) 

et l'extrait ci-dessous est mon deuxième modèle (modèle enfant):

class Klass(models.Model): 
    title = models.CharField(max_length=50) 
    description = models.CharField(max_length=500) 
    teacher = models.ForeignKey(Profile,related_name='teacher', on_delete=models.CASCADE) 
    university = models.CharField(max_length=50, blank=True, null=True) 

que vous voyez dans le second extrait, le teacher obtient sa valeur de Profile modèle.

Mais dans la vue API django-rest-framework, au lieu d'afficher le nom du teahcer, il affiche le pk.

Les extraits ci-dessous est mon sérialiseur et vue:

# serializer 
class KlassSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Klass 
     fields = ('id', 'title', 'description', 'teacher') 

# view 
class KlassView(APIView): 

    def get(self, request, pk=None): 
     if pk is not None: 
      klass = Klass.objects.filter(pk=pk).get() 
      serializer = KlassSerializer(klass) 
      return Response({'message': 'class get ', 'data': serializer.data,}) 

ce qui est le résultat:

{ 
    "message": "class get ", 
    "data": { 
     "id": 13, 
     "title": "ُThe First Class", 
     "description": "Nothing for now!", 
     "teacher": 2 
    } 
} 

Comment puis-je résoudre le problème? grâce

Répondre

1

l'essayer, plus detaile nested-relationships

class TeacherSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Profile 
     fields = ('name') 

class KlassSerializer(serializers.ModelSerializer): 
    teacher = TeacherSerializer(read_only=True) 

    class Meta: 
     model = Klass 
     fields = ('id', 'title', 'description', 'teacher') 
+0

désolé, essayez de supprimer 'many' –

+0

ouais, en supprimant Beaucoup = True cela a fonctionné. – msln

+0

heureux de vous aider) –