Quero esclarecer a documentação fornecida django-rest-framework
sobre a criação de um objeto de modelo. Até agora descobri que existem 3 abordagens sobre como lidar com esses eventos.
O
create()
método do serializador . Aqui está a documentaçãoclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)
O
create()
método ModelViewset . Documentaçãoclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]
O
perform_create()
método ModelViewset . Documentaçãoclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Essas três abordagens são importantes, dependendo do ambiente do seu aplicativo.
Mas QUANDO precisamos usar cada create() / perform_create()
função ??. Por outro lado, descobri que dois métodos de criação foram chamados para uma única solicitação de postagem do modelviewset create()
e do serializador create()
.
Espero que alguém compartilhe um pouco de seu conhecimento para explicar e isso certamente será muito útil no meu processo de desenvolvimento.
create(self, validated_data)
no serializador, significa que ele se concentra na lógica de validação de dados? e mais sobre isso pode ajudar a retornar os dados do serializador fornecido de volta para a resposta, certo?create
função no próprio serializador é única chamada quando você fazserializer.save()
. Em suacreate(self, request)
função dentro (AccountViewSet
), você não está chamandoserializer.save()
a todos e, portanto, a única criação da instância está acontecendo com esta chamada:Account.objects.create_user(**serializer.validated_data)
.