python保存save_python – 何时使用pre_save,保存,post_save在django?

我会尽力解释一个例子:

pre_save和post_save是signals,由型号发送。简单的说,在模型保存之前或之后采取的动作被调用。

>发出预先保存的信号。

>预处理数据。

>大多数字段不进行预处理 – 现场数据保持原样。

>准备数据库的数据。

>将数据插入数据库。

>发出后保存信号。

Django确实提供了覆盖这些信号的方法。

现在,

在实际保存到数据库之前,pre_save信号可以被覆盖进行一些处理 – 例如:(我不知道pre_save在我头上的理想位置的一个很好的例子)

假设您有一个ModelA,它存储对尚未编辑的所有ModelB对象的引用。为此,您可以注册一个pre_save信号,以在ModelB的保存方法被调用之前通知ModelA(没有任何阻止您在此处注册post_save信号)。

现在,调用模型的保存方法(不是信号) – 默认情况下,每个模型都有一个保存方法,但可以覆盖它:

class ModelB(models.Model):

def save(self):

#do some custom processing here: Example: convert Image resolution to a normalized value

super(ModelB, self).save()

然后,您可以注册post_save信号(这更常用于pre_save)

在系统中创建User对象时,常见的用例是创建UserProfile对象。

您可以注册一个post_save信号,该信号创建一个与系统中每个用户对应的UserProfile对象。

信号是保持模块化和明确化的一种方式。 (如果我保存或更改ModelB中的某些东西,请明确地通知ModelA)

我会想到更具体的现实世界的例子,试图更好地回答这个问题。同时我希望这可以帮助你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值