drf---create方法和perform_create方法有什么区别

1. create&&perform_create介绍

1. 1 介绍

# create
序列化器保存数据的方法

# perform_create
调用保存数据的方法

# perform_create 该方法就是一个serializer.save(),本质上就是调用create

1.2. 源码

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 就是实例化产生的序列化器对象
    serializer.save()
    serializer.data.get('xxx')
    # 我们可以serializer.data去获取反序列化之后的数据,但有个注意点,如果需要保存的话,只能在保存之后才能获取数据

1.3 两者使用的场合

# create
就是用于保存数据,


# perform_create
用于在create保存的时候,想要传入自己的默认值,或者在保存前后进行一些逻辑判断

2. 案例

class CommentAPIView(ListAPIView, CreateAPIView):
    """获取更多评论&&保存评论视图"""
 
    queryset = models.Comment.objects.all()
    serializer_class = TextSerializer
 
 
    def perform_create(self, serializer):
        # 1.执行创建传入默认的数据
        serializer.save(userinfo=self.request.user)
        # 2.保存之后,获取反序列化(保存)之后的数据
        print("serializer", serializer.data.get('topic'))

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑猪去兜风z1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值