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

如何重写Django模型save方法 实现指定CPF购买订单自动存为已批准状态

Django 模型自动批准指定CPF购买记录实现方案

核心实现方式为重写Purchases模型的save()方法,在数据写入数据库前完成CPF校验和状态自动赋值,修改后的完整模型代码如下:

class Purchases(TimeStampedModel):
    APROVADO = "AP"
    EM_VALIDACAO = "VA"
    # 修正原代码拼写错误:CHOICHES -> CHOICES
    STATUS_CHOICES = (
        (APROVADO, "已批准"),
        (EM_VALIDACAO, "验证中"),
    )
    # 自动批准CPF白名单,可根据业务需求调整,也可以配置到django settings中避免硬编码
    AUTO_APPROVE_CPFS = {"12345678909", "98765432100"}

    values = models.DecimalField(decimal_places=2, max_digits=10, default=0)
    cpf = BRCPFField("CPF")
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default=EM_VALIDACAO)

    def save(self, *args, **kwargs):
        # 当CPF属于自动批准白名单时,自动设置状态为已批准
        if self.cpf in self.AUTO_APPROVE_CPFS:
            self.status = self.APROVADO
        # 若需要保留手动修改的状态优先级,可替换为以下逻辑,避免覆盖用户手动调整的状态
        # if self.cpf in self.AUTO_APPROVE_CPFS and self.status == self.EM_VALIDACAO:
        #     self.status = self.APROVADO
        
        # 调用父类原生save方法完成数据持久化
        super().save(*args, **kwargs)

注意事项

  • 代码中AUTO_APPROVE_CPFS为自动批准的CPF配置,你可以根据实际业务需求修改为指定的CPF值。
  • 原模型代码中STATUS_CHOICHES为拼写错误,修正后的代码已经调整为正确的STATUS_CHOICES。
  • Django的批量操作方法(如bulk_create、bulk_update)不会触发模型的save方法,如果你有批量写入购买记录的场景,需要单独处理自动批准逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:04