Quando utilizzare create() di Serializer e create() di ModelViewset perform_create()

| |

Voglio chiarire la documentazione fornita di django-rest-framework per quanto riguarda la creazione di un oggetto modello. Finora ho scoperto che ci sono 3 approcci su come gestire tali eventi.

  1. Il metodo create() del serializzatore. Ecco il documentazione

     class CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data) 
  2. The ModelViewset create(). Documentazione

    class AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permit_classes = [IsAccountAdminOrReadOnly] 
  3. Il metodo ModelViewset perform_create(). Documentazione

    class SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user) 

Questi tre approcci sono importanti a seconda dell'ambiente applicativo. Ma quando dobbiamo usare ogni funzione create() / perform_create()? D'altra parte, ho trovato alcuni account in cui sono stati chiamati due metodi di creazione per una singola richiesta di post create() di modelviewset e create() di serializer.