Vue + Django 2.0.6 学习笔记 10.2 修改购物车数量

我们接着上节的说

上节课我们写完代码时候 尝试着去修改购物车数量,然后他报错了

我点update就报错

为毛它要我实现update()函数 ?Serializer没有帮我搞定么?

= =还真没有  意思要我自己来? 好吧

class ShopCartSerializer(serializers.Serializer):

    def update(self, instance, validated_data):

        #修改商品数量 instance 其实是值model(ShoppingCart)的实例

        instance.nums = validated_data["nums"]
        instance.save()
        return instance

这样就可以了。 对了 在viewset那边需要添加一个跟用户收藏那里同样的代码:

class ShoppingCartViewset(viewsets.ModelViewSet):
    lookup_field = "goods_id"

这样显示出来的才是goods的ID 而不是表自动生成的id

代码写完 测试下

搞定 

贴下ModelSerializer的update函数代码

# ModelSerializer

    def update(self, instance, validated_data):
        raise_errors_on_nested_writes('update', self, validated_data)
        info = model_meta.get_field_info(instance)

        # Simply set each attribute on the instance, and then save it.
        # Note that unlike `.create()` we don't need to treat many-to-many
        # relationships as being a special case. During updates we already
        # have an instance pk for the relationships to be associated with.
        for attr, value in validated_data.items():
            if attr in info.relations and info.relations[attr].to_many:
                field = getattr(instance, attr)
                field.set(value)
            else:
                setattr(instance, attr, value)
        instance.save()

        return instance

所以 还是ModelSerializer方便 能用它就尽量用它吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@凌晨三点半

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

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

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

打赏作者

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

抵扣说明:

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

余额充值