您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

何时使用序列化器的create()和ModelViewset的create()perform_create()

何时使用序列化器的create()和ModelViewset的create()perform_create()

例:

def create(self, validated_data):
    email = validated_data.get("email", None)
    validated.pop("email") 
    # Now you have a clean valid email string 
    # You might want to call an external API or modify another table
    # (eg. keep track of number of accounts registered.) or even
    # make changes to the email format.

    # Once you are done, create the instance with the validated data
    return models.YourModel.objects.create(email=email, **validated_data)

中的create(self, request, *args, **kwargs)函数在的父类ModelViewSet定义。的主要功能如下:CreateModelMixin``ModelViewSet``CreateModelMixin

from rest_framework import status

from rest_framework.response import Response

def create(self, request, args, *kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

def perform_create(self, serializer): serializer.save()

如您所见,以上create函数负责在序列化程序上调用验证并产生正确的响应。这样做的好处是,您现在可以隔离应用程序逻辑,而不必担心平凡和重复的验证调用以及处理响应输出:)。与create(self, validated_data)序列化器(您的特定应用程序逻辑所在的位置)中的结合使用时,这可以很好地工作。

希望这可以帮助!

其他 2022/1/1 18:25:17 有330人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶