You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django库存同步逻辑修复:购物车数量变更需联动库存双向调整

修正Django购物车库存同步逻辑问题

问题根源

当前库存更新逻辑未计算购物车数量的变化差值,仅单向减少库存,导致购物车数量减少时库存无法反向增加。核心解决思路是通过对比购物车新旧数量的差值,同步调整库存。


1. 核心修正逻辑

计算购物车数量变化值:qty_change = 新购物车数量 - 旧购物车数量

  • 若qty_change > 0(购物车加量):库存减去该值(库存减少)
  • 若qty_change < 0(购物车减量):库存减去负数等价于加上绝对值(库存增加)

2. 修正视图代码

修正edit_stocks视图

def edit_stocks(request):
    if request.method == 'POST':
        product_id = request.POST.get('product_id')
        # 必须获取原有购物车数量(前端传递或从购物车模型读取)
        old_cart_qty = int(request.POST.get('old_cart_qty'))
        new_cart_qty = int(request.POST.get('cart_qty'))
        
        # 计算数量变化差值
        qty_change = new_cart_qty - old_cart_qty
        
        stock = Stocks.objects.get(product_id=product_id)
        # 根据差值同步调整库存
        stock.stock_count -= qty_change
        
        # 可选:避免库存出现负值
        if stock.stock_count < 0:
            stock.stock_count = 0
        
        stock.save()
        # 后续响应逻辑...

修正supplier_edit视图(若涉及库存调整)

def supplier_edit(request, pk):
    # 前置逻辑:获取对应产品、用户购物车记录等
    product = Product.objects.get(pk=pk)
    user_cart = Cart.objects.get(user=request.user, product=product)
    
    if request.method == 'POST':
        new_cart_qty = int(request.POST.get('new_cart_qty'))
        old_cart_qty = user_cart.quantity
        
        qty_change = new_cart_qty - old_cart_qty
        
        stock = Stocks.objects.get(product=product)
        stock.stock_count -= qty_change
        
        if stock.stock_count < 0:
            stock.stock_count = 0
        
        stock.save()
        # 更新购物车数量
        user_cart.quantity = new_cart_qty
        user_cart.save()
        # 后续跳转/响应逻辑...

3. 确认Stocks模型字段正确性

确保库存字段为数值类型,避免类型错误:

from django.db import models

class Stocks(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    stock_count = models.IntegerField(default=0)  # 库存数量字段

    def __str__(self):
        return f"{self.product.name} - 库存: {self.stock_count}"

内容的提问来源于stack exchange,提问作者Shivang Kant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:17:42