Ich lese auf Django REST-Framework und ich habe ein Modell, das mit Gettern mit der SerializerMethodField() serialisiert wird.Django REST Serializer Methode beschreibbar Feld
Wenn ich jedoch POST zu diesem Endpunkt, möchte ich in der Lage sein, dieses Feld auch zu setzen, aber das funktioniert nicht, weil Sie, wie die Dokumente oben zeigen, nicht in ein SerializerMethodField schreiben können. Gibt es in Django REST eine Möglichkeit, ein Serialisierungsfeld zu haben, für das Sie eine benutzerdefinierte Getter-Methode definieren, und eine benutzerdefinierte Setter-Methode?
EDIT: Hier ist die Quelle von dem, was ich versuche zu tun. Client hat eine 1: 1-Beziehung mit dem Benutzer.
class ClientSerializer(serializers.ModelSerializer):
email = serializers.SerializerMethodField()
def create(self, validated_data):
email = validated_data.get("email", None) # This doesn't work because email isn't passed into validated_data because it's a readonly field
# create the client and associated user here
def get_email(self, obj):
return obj.user.email
class Meta:
model = Client
fields = (
"id",
"email",
)
http://stackoverflow.com/questions/18396547/django-rest-framework-adding-additional-field-to-modelserializer –
Ja, darum geht es mir. Es besagt, dass Sie in einem dieser Kommentare keine Daten an ein serializermethodfield auf POST wirklich akzeptieren können, aber ich frage, ob es eine Möglichkeit gibt, dies in Django REST zu tun, die möglicherweise das serializermethodfield – Nick
nicht verwendet, das Sie posten sollten die Quelle für Ihre Nutzung der Django Rest Serializer-Methode. Warum nicht einfach ein normales Serializer-Feld verwenden? Sie können den Methodenserialisierer nicht für Postanforderungen verwenden, da es sich um ein schreibgeschütztes Feld handelt. – Dap