drf中序列化器的create和update
保存数据
验证成功之后把数据传入数据库中进行保存,要基于validated_data完成数据库对象的创建,此时永达create()和update()方法实现
定义create()和update()方法
def create(self, validated_data):
"""
新建 create
validated_data内置参数
被序列化器中的save()调用的 通过两个参数不同来判断是create()还是update()
:return 模型类对象
"""
return BookInfo.objects.create(**validated_data) #此处指明create方法,如果出错,数据将存不到数据库
def update(self,instance,validated_data):
"""
更新
:param instance: 要更新的实例化模型类对象
:param validated_data:
:return: 更新后的数据
"""
instance.btitle = validated_data.get('btitle',instance.btitle)
instance.bpub_date = validated_data.get('bpub_date',instance.bpub_date)
instance.bread = validated_data.get('bread',instance.bread)
instance.bcomment = validated_data.get('bcomment',instance.bcomment)
instance.save() #在返回对象时,把数据保存在数据库中
return instance
————————————————
版权声明:本文为CSDN博主「gy_98」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42684307/article/details/81067523
验证结果:
>>> from booktest.serializers import BookInfoSerializer
>>> data = {'btitle':'白鹿原','bread':3232,'bpub_date':'1987-03-18','bcomment':232}
>>> s = BookInfoSerializer(data=data) #没有传入instance实例,调用save()时实际上调用了create()
>>> s.is_valid()
True
>>> s.save()
————————————————
版权声明:本文为CSDN博主「gy_98」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42684307/article/details/81067523
传入instance实例时调用update方法,无实例传入时调用的是create()方法
此时数据库中已经有相关数据了
>>> from booktest.models import BookInfo
>>> book = BookInfo.objects.get(id=2) #先获取要修改的数据
>>> data = {'btitle':'天龙八八'} #传入要修改的内容
>>> s = BookInfoSerializer(book,data=data) #创建反序列化器 传入了instance实例化参数
>>> s.is_valid()
True
>>> s.save() #此时save()调用的是update方法
<BookInfo: 天龙八八>
>>> book.btitle
————————————————
版权声明:本文为CSDN博主「gy_98」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42684307/article/details/81067523