Quiero aclarar la documentación proporcionada django-rest-frameworksobre la creación de un objeto modelo. Hasta ahora encontré que hay 3 enfoques sobre cómo manejar tales eventos.
El
create()método del serializador . Aquí está la documentaciónclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)El
create()método ModelViewset . Documentaciónclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]El
perform_create()método ModelViewset . Documentaciónclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Estos tres enfoques son importantes según el entorno de su aplicación.
Pero, ¿CUÁNDO necesitamos usar cada create() / perform_create()función? Por otro lado, encontré una cuenta de que se llamaron dos métodos de creación para una sola solicitud de publicación del modelviewset create()y del serializador create().
Espero que alguien comparta algunos de sus conocimientos para explicarlo y esto seguramente será muy útil en mi proceso de desarrollo.

create(self, validated_data)serializador, ¿significa que se centra en la lógica de validación de datos? y más, puede ayudar a devolver los datos del serializador dado a la respuesta, ¿verdad?createfunción en el propio serializador es única llamada cuando lo haceserializer.save(). En elcreate(self, request)interior de la función (AccountViewSet), usted no está llamandoserializer.save()a todos y, por lo tanto, la única creación de la instancia que está pasando con esta llamada:Account.objects.create_user(**serializer.validated_data).