Django中update_or_create方法

在项目中需要根据商品规格ID去判断到底是修改 删除 还是新增规格

和前端约定为 新增的规格 传0

复制代码
obj, create =models.CommodityInventory.objects.update_or_create(
                    inventory_id=key["inventory_id"],
                    defaults={
                        "colour": key["colour"],  # 规格名称
                        "bazaar": key["bazaar"],  # 市场价
                        "price": key["price"],  # 价格
                        "number": key["number"],  # 库存
                    }
                )
复制代码

结果报错 ValueError: The database backend does not accept 0 as a value for AutoField.

原因是0不能作为自增字段的值

奇怪......描述是inventory_id作为筛选条件 如果查找不到就新建 使用defaults的键值 按理来说没问题 但是报错明显是在创建的时候使用了这个键值对

点进去 发现确实是 创建的时候也用到了上述的用来筛选的的字段

询问组长后解决inventory_id=key["inventory_id"] if key["inventory_id"] else None

直接传None即可

 

posted @   RicardoMYun  阅读(915)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示