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
désolé, essayez de supprimer 'many' –
ouais, en supprimant Beaucoup = True cela a fonctionné. – msln
heureux de vous aider) –