Ich versuche, einen verschachtelten Serializer in Django REST Framework einzurichten, aber nachdem ich die kurze Anleitung in der Dokumentation, http://www.django-rest-framework.org/api-guide/relations/#nested-relationships, hatte ich keine Änderung in den serialisierten Daten.Django REST Framework geschachtelter Serializer ohne Wirkung
models.py
class Franchise(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
class Item(models.Model):
id = models.AutoField(primary_key=True)
franchise = models.ForeignKey(Franchise, on_delete=None)
title = models.CharField(max_length=255)
Initial serializers.py
class ItemListSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('id', 'franchise', 'title')
class FranshiseDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Franchise
fields = ('id', 'name', 'items')
Wenn ich ItemListSerializer
mit einer Abfrage Abfrage erhalte ich wieder die erwartet:
[
{
"id": 1,
"franchise": 1,
"title": "Item 1",
},
{
"id": 2,
"franchise": 1,
"title": "Item 2"
},
{
"id": 3,
"franchise": 2,
"title": "Item 3",
}
]
Und das erwartet Ergebnis, wenn ich FranchiseDetailSerializer
mit einem bereits bestehenden Franchise-Objekt abfrage.
{
"id": 1,
"name": "Franchise 1"
}
Nun, wenn ich FranchiseDetailSerializer
, gemäß den DRF Leitfaden für verschachtelte Beziehungen ändern:
class FranshiseDetailSerializer(serializers.ModelSerializer):
items = ItemListSerializer(many=True, read_only=True)
class Meta:
model = Franchise
fields = ('id', 'name', 'items')
würde ich erwarten, das folgende Ergebnis:
{
"id": 1,
"name": "Franchise 1"
"items": [
{"id": 1, "title": "Item 1", "franchise": 1},
{"id": 2, "title": "Item 2", "franchise": 1}
]
}
Aber stattdessen ich get keine Änderung, als ob ich nicht FranchiseDetailSerializer
überhaupt aktualisiert hätte:
{
"id": 1,
"name": "Franchise 1"
}
Das Schlimmste an dem für mich ist, dass ich bin nicht jede Art von Störung zu erhalten, bin ich einfach nicht Ergebnisse zu sehen.
Alle und alle Hilfe ist dankbar, danke.
Super, das funktioniert, vielen Dank :) – 99lives