ich ein Modell serialisieren möchten, wollen aber ein zusätzliches Feld enthalten, die einige Datenbankabfragen auf dem Modellinstanz erfordert tun serialisiert werden:Django REST Framework: Hinzufügen zusätzlicher Feld ModelSerializer
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
Was das ist richtiger Weg, dies zu tun? Ich sehe, dass you can pass in extra "context" an den Serializer, ist die richtige Antwort, um das zusätzliche Feld in einem Kontextwörterbuch übergeben? Mit diesem Ansatz würde die Logik, das Feld zu erhalten, das ich brauche, nicht mit der Serialisiererdefinition in sich geschlossen, was ideal ist, da jede serialisierte Instanz my_field
benötigen wird. Anderswo in der DRF-Serializer-Dokumentation ist es says "zusätzliche Felder können jeder Eigenschaft entsprechen oder auf dem Modell abrufbar sein". Ist zusätzliche Felder, worüber ich spreche? Sollte ich eine Funktion in Foo
's Modelldefinition definieren, die my_field
Wert zurückgibt, und in den Serialisierer hänge ich my_field auf diese aufrufbar? Wie sieht das aus?
Vielen Dank im Voraus, gerne die Frage zu klären, wenn nötig.
+1, Würde das auch für einen CustomSerializer funktionieren? –
ist es möglich, solche Felder zu validieren? Meine Frage ist: Wie akzeptiere ich benutzerdefinierte POST-Werte, die validiert und im post_save() - Handler verarbeitet werden können? – Alp
Beachten Sie, dass SerializerMethodField schreibgeschützt ist. Dies funktioniert nicht für eingehende POST/PUT/PATCH. –