最佳答案
我想澄清一下关于创建模型对象的 Django-rest-Framework 的给定文档。到目前为止,我发现有3种方法来处理这样的事件。
Serializer 的 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()
函数呢?另一方面,我发现一些帐户,为一个帖子请求 ModelViewSet
的 create()
和序列化程序的 create()
调用了两个 create 方法。