何时使用Serializer的create()和ModelViewSet的perform_create()函数?

6 浏览
0 Comments

何时使用Serializer的create()和ModelViewSet的perform_create()函数?

我想澄清Django-rest-framework关于创建模型对象的给定文档。到目前为止,我发现有三种处理这种事件的方法。

  1. 序列化器的create()方法。这里是文档

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

  2. ModelViewset的create()方法。 文档

    class AccountViewSet(viewsets.ModelViewSet):
        queryset = Account.objects.all()
        serializer_class = AccountSerializer
        permission_classes = [IsAccountAdminOrReadOnly]
    

  3. ModelViewset的perform_create()方法。 文档

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

这三种方法在您的应用程序环境中很重要。

但是我们什么时候需要使用每个create() / perform_create()函数呢?另一方面,我发现一些帐户在单个POST请求中调用了两个create方法,即ModelViewSetcreate()和序列化器的create()

0