In Django REST-Framework, was ist bei der Erstellung einer flachen, Read-Write-Serializer-Darstellung beteiligt? Die Dokumente beziehen sich auf eine "flache Darstellung" (Ende des Abschnitts http://django-rest-framework.org/api-guide/serializers.html#dealing-with-nested-objects), bieten jedoch keine Beispiele oder irgendetwas anderes als einen Vorschlag, eine RelatedField
Unterklasse zu verwenden.Django-REST-Framework flach, Read-Write-Serializer
Zum Beispiel, wie eine flache Darstellung der User
und UserProfile
Beziehung unten zur Verfügung stellen?
# Model
class UserProfile(models.Model):
user = models.OneToOneField(User)
favourite_number = models.IntegerField()
# Serializer
class UserProfileSerializer(serializers.ModelSerializer):
email = serialisers.EmailField(source='user.email')
class Meta:
model = UserProfile
fields = ['id', 'favourite_number', 'email',]
die oben UserProfileSerializer
dürfen nicht zu dem email
Feld zu schreiben, aber ich hoffe, dass es die Absicht ausreichend gut zum Ausdruck bringt. Also, wie sollte ein 'flacher' Lese-Schreib-Serialisierer konstruiert werden, um ein beschreibbares email
Attribut auf dem UserProfileSerializer
zu erlauben? Ist dies überhaupt möglich, wenn ModelSerializer abgeleitet wird?
Danke.
Paul, ist Ihre Anfrage.DATA hier ein einzelnes verschachteltes JSON-Array oder haben Sie eines für jedes der Modelle in der POST-Anfrage? (Ich versuche, etwas Ähnliches zu erreichen) – jvc26
@ jvc26, mein Beispiel oben würde ein einzelnes Root-JSON-Objekt in 'request.DATA' verwenden. 'request.DATA' würde in etwa so aussehen: ' {'id': '1', 'Favoritennummer': '2', 'E-Mail': '[email protected]'} ' Soweit der Client ist Bedenken Sie, dass das JSON-Objekt eine einzelne Modellinstanz darstellt und dass es keine Kenntnis über die beiden Modelle ("User" und "UserProfile") hat, auf die es tatsächlich auf dem Server aufgeteilt ist. 'UserSerializer' und' UserProfileSerializer' werden verwendet, um Inhalte aus request.DATA für ihre zugeordneten Modelle zu extrahieren, zu validieren und zu speichern. –