Problème:
J'utilise Django Rest Framework et je souhaite récupérer tous les modèles avec les relations incluses, comme ceci:
TestModel.objects.all()
Mon modèle ressemble à ceci:
class TestModel(models.Model):
name = models.CharField(max_length=32)
related_model = models.ForeignKey(TestRelation)
Le problème, c’est que je n’obtiens que les clés primaires pour related_model
mais j'ai besoin de l'ensemble related_model
!
J'utilise la ListCreateAPIView, avec le queryset ci-dessus (TestModel.objects.all()
) et la forme la plus élémentaire du ModelSerializer.
J'ai essayé le PrimaryKeyRelatedField
mais j'obtiens le même résultat ..
Merci!
Réponses:
1 pour la réponse № 1Créez simplement un sérialiseur pour votre modèle associé:
class TestRelationSerializer(serializers.ModelSerializer):
class Meta:
meta = TestRelation
et l'utilisation est comme champ dans TestModelSerializer
:
class TestModelSerializer(serializers.ModelSerializer):
related_model = TestRelationSerializer()
Vous pouvez aussi le faire autrement, en utilisant TestModelSerializer
comme champ dans TestRelationSerializer
avec beaucoup mis à true:
class TestRelationSerializer(serializers.ModelSerializer):
testmodel_set = TestModelSerializer(many=True)
Rappelez-vous simplement que vous ne pouvez pas faire les deux à la fois car la récursion est infinie.