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

Django如何延迟提交数据库变更,实现商品编辑待审核时保留原上线版本

电商商品编辑审核(不影响线上版本)实现方案

核心逻辑

你现有逻辑的问题是直接修改了主商品记录的审核状态,导致线上版本下架。正确的解法是完全隔离修改草稿和线上正式商品数据,审核通过前所有修改都存在独立的草稿表,不碰主表的任何数据,自然不会影响线上版本的展示。

具体实现步骤

  • 新增ProductEditDraft模型,字段设计参考(以Django ORM为例,其他框架逻辑一致):
    class ProductEditDraft(models.Model):
        STATUS_CHOICES = (
            ('pending', '待审核'),
            ('approved', '审核通过'),
            ('rejected', '审核拒绝'),
        )
        # 关联原正式商品
        product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='edit_drafts')
        # 存储用户修改的字段键值对,键为Product表的字段名,值为修改后的内容
        edited_fields = models.JSONField(verbose_name="修改的字段内容")
        submit_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='submitted_product_edits')
        status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
        submit_time = models.DateTimeField(auto_now_add=True)
        audit_user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='audited_product_edits')
        audit_time = models.DateTimeField(null=True, blank=True)
        reject_reason = models.TextField(blank=True, verbose_name="拒绝原因")
    
  • 调整商品编辑提交逻辑
    用户提交商品编辑请求后,不再直接更新Product表记录,而是将用户修改的所有字段提取为键值对,存入ProductEditDraft表生成待审核草稿,原Product记录的isApproved字段保持原有值,线上展示完全不受影响。
  • 开发审核对比界面
    管理员后台的待审核列表中,针对每一条草稿,可以拉取关联的原Product记录的当前值,和草稿的edited_fields内容做字段级的差异对比,高亮标注修改内容,不需要管理员手动找不同。
  • 审核结果处理
    • 审核通过:遍历edited_fields的键值对,逐个更新关联Product记录的对应字段,保存后将草稿状态更新为approved即可
    • 审核拒绝:将草稿状态更新为rejected,可填写拒绝原因通知提交用户,全程不修改Product主表数据
  • 兼容现有逻辑
    原有前端商品查询、展示逻辑完全不需要修改,只要继续取Product表中isApproved=True的记录即可,草稿表数据不会流入前台展示流程。

可选优化

  • 如果需要支持商品版本回溯,可以在每次审核通过更新主表时,生成一条ProductHistory快照记录,存储更新前的全量字段值,后续需要回滚时直接读取快照恢复即可
  • 商品图片、视频等静态资源修改时,可以先上传到临时存储目录,审核通过后再移动到正式存储路径,避免无效资源占用正式存储
  • 如果你的Product表字段非常多,且需要经常按修改的字段查询草稿,可以将ProductEditDraft表设计为和Product表字段完全一致,不需要用JSON存储修改内容,后续同步数据时可以直接字段赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:48:01