Ich habe einige Modelle wie diese:
%Vor%Damit möchte ich nur einen Serializer erstellen, der alle diese Feldtypen enthält (Serialisierung, Deserialisierung, Aktualisierung und Speicherung).
Um genauer zu sein, möchte ich nur einen Serialisierer (TypeBaseSerializer), der das Dropdown auf der Benutzeroberfläche druckt, die JSON-Antwort serialisiert, es bei Post deserialisiert und für alle meine Basistypen speichert.
In etwa so:
%Vor%Ist es möglich?
Sie können nicht verwenden ModelSerializer
mit einem abstrakten Basismodell.
Von restframework.serializers:
Ich schrieb eine serializer_factory-Funktion für ein ähnliches Problem:
%Vor%Sie können dann das Werk verwenden, um Serialisierer nach Bedarf zu erstellen:
%Vor%Aktivieren Sie jetzt verschiedene Unterklassen-Serialisierer:
%Vor%Ich denke, der folgende Ansatz ist sauberer. Sie können das Feld "abstract" für den Basis-Serializer auf true setzen und Ihre allgemeine Logik für alle untergeordneten Serializer hinzufügen.
%Vor%Und dann erstellen Sie untergeordnete Serialisierer und verwenden Sie sie für die Datenbearbeitung.
%Vor%Jetzt können Sie diese beiden Serializer normalerweise für jedes Modell verwenden.
Aber wenn Sie wirklich einen Serializer für beide Modelle haben möchten, dann erstellen Sie auch ein Container-Modell und einen Serializer für ihn. Das ist viel sauberer:)
Nur ein bisschen über @ adkis Antwort iterieren:
%Vor%
Tags und Links python django abstract-class django-rest-framework