Ich möchte die gegebene Dokumentation django-rest-framework
bezüglich der Erstellung eines Modellobjekts klarstellen . Bisher habe ich festgestellt, dass es drei Ansätze gibt, wie man mit solchen Ereignissen umgeht.
Die
create()
Methode des Serializers . Hier ist die Dokumentationclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)
Die ModelViewset-
create()
Methode. Dokumentationclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]
Die ModelViewset-
perform_create()
Methode. Dokumentationclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Diese drei Ansätze sind abhängig von Ihrer Anwendungsumgebung wichtig.
Aber wann müssen wir jede create() / perform_create()
Funktion verwenden? Auf der anderen Seite fand ich einen Bericht, dass zwei Erstellungsmethoden für eine einzelne Post-Anfrage des Modelviewset create()
und des Serializers aufgerufen wurden create()
.
Hoffentlich würde jeder etwas von seinem Wissen teilen, um es zu erklären, und dies wird sicherlich sehr hilfreich in meinem Entwicklungsprozess sein.
create(self, validated_data)
im Serializer bedeutet es, dass es sich auf Datenvalidierungslogik konzentriert? und darüber hinaus kann es helfen, die Daten des angegebenen Serializers wieder auf die Antwort zurückzuführen, oder?