Ich möchte ein Modell serialisieren, möchte jedoch ein zusätzliches Feld einfügen, in dem einige Datenbanksuchen für die zu serialisierende Modellinstanz durchgeführt werden müssen:
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 ist der richtige Weg, um dies zu tun? Ich sehe, dass Sie zusätzlichen "Kontext" an den Serializer übergeben können. Ist die richtige Antwort, um das zusätzliche Feld in einem Kontextwörterbuch zu übergeben? Bei diesem Ansatz wäre die Logik zum Abrufen des von mir benötigten Felds nicht in der Serializer-Definition enthalten, was ideal ist, da jede serialisierte Instanz benötigt wird my_field
. An anderer Stelle in der Dokumentation zu DRF-Serialisierern heißt es : "Zusätzliche Felder können jeder Eigenschaft entsprechen oder im Modell aufgerufen werden können." Sind es zusätzliche Felder, über die ich spreche? Sollte ich in Foo
der Modelldefinition eine Funktion definieren, die einen my_field
Wert zurückgibt , und im Serializer my_field mit diesem aufrufbaren Element verbinden? Wie sieht das aus?
Vielen Dank im Voraus, gerne klären Sie die Frage, falls erforderlich.