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 @ 2022-07-04 16:26  RicardoMYun  阅读(933)  评论(0)    收藏  举报