NotImplementedError: `create()` must be implemented./NotImplementedError: `update()` must be impleme

本文讨论了在使用Django序列化时遇到的`NotImplementedError`异常,详细解释了该异常出现的原因——`create()`和`update()`方法未实现,并提供了源码分析及解决此问题的方法,即在序列化模型类中实现这两个方法。

NotImplementedError: create() must be implemented.
这个问题是由于我在Django序列化保存数据是报出的异常
原因是:create方法没有被实现

NotImplementedError: update() must be implemented.
这个问题是由于我在Django序列化更新/修改数据是报出的异常
原因是:update方法没有被实现

# 序列化保存数据段代码
data = {'btitle':'python','bpub_date':'1990-12-02', 'bread':110,'bcomment':20}
# 创建序列化器类
serializer = BookInofSerializer(data=data)
# 调用is_valid方法进行数据校验
print(serializer.is_valid())
# 保存数据
serializer.save()
save()/update()方法源码部分

def update(self, instance, validated_data):
	raise NotImplementedError('`update()` must be implemented.')

def create(self, validated_data):
	raise NotImplementedError('`create()` must be implemented.')

解决方法也很简单,在序列化模型类中去实现create()方法即可

# 在对应的序列化模型类下实现create()方法
def create(self, validated_data):
    """
    :param validated_data: 校验之后的数据
    **validated_data:把字典进行拆包
    :return:
    """
    # 新增一本图书
    book = BookInfo.objects.create(**validated_data)
    return book

# 在对应的序列化模型类下实现update()方法
# 具体实现方法可以不尽相同,这里只是提供一种思路,仅供参考
def update(self, instance, validated_data):
    """
    :param instance: 创建序列化器时,传入的实例对象
    :param validated_data: 校验之后的数据
    """
    # 获取btitle和bpub_date
    btitle = validated_data.get('btitle')
    bpub_date = validated_data.get('bpub_date')

    # 更新instance
    instance.btitle = btitle
    instance.bpub_date = bpub_date
    instance.save()

    # 返回instance
    return instance


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值