Problem:
Używam Django Rest Framework i chcę pobrać wszystkie modele z powiązanymi relacjami, jak poniżej:
TestModel.objects.all()
Mój model wygląda następująco:
class TestModel(models.Model):
name = models.CharField(max_length=32)
related_model = models.ForeignKey(TestRelation)
Problem polega na tym, że otrzymuję tylko klucze podstawowe related_model
ale potrzebuję całości related_model
!
Używam ListCreateAPIView, z powyższym zestawem zapytań (TestModel.objects.all()
) i najbardziej podstawową formę ModelSerializer.
Próbowałem PrimaryKeyRelatedField
ale otrzymuję ten sam wynik ...
Dzięki!
Odpowiedzi:
1 dla odpowiedzi № 1Po prostu utwórz serializator dla swojego pokrewnego modelu:
class TestRelationSerializer(serializers.ModelSerializer):
class Meta:
meta = TestRelation
a użycie jest jak pole TestModelSerializer
:
class TestModelSerializer(serializers.ModelSerializer):
related_model = TestRelationSerializer()
Możesz też zrobić to inaczej, używając TestModelSerializer
jako pole w TestRelationSerializer
z wieloma ustawionymi na true:
class TestRelationSerializer(serializers.ModelSerializer):
testmodel_set = TestModelSerializer(many=True)
pamiętaj tylko, że nie możesz zrobić obu naraz z powodu nieskończonej rekurencji, którą to czyni.