何时使用Serializer的create()和ModelViewSet的perform_create()函数?
何时使用Serializer的create()和ModelViewSet的perform_create()函数?
我想澄清Django-rest-framework关于创建模型对象的给定文档。到目前为止,我发现有三种处理这种事件的方法。
- 序列化器的
create()
方法。这里是文档class CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)
- ModelViewset的
create()
方法。 文档class AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]
- ModelViewset的
perform_create()
方法。 文档class SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
这三种方法在您的应用程序环境中很重要。
但是我们什么时候需要使用每个create() / perform_create()
函数呢?另一方面,我发现一些帐户在单个POST请求中调用了两个create方法,即ModelViewSet
的create()
和序列化器的create()
。