栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时在Django中使用pre_save,保存,post_save?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时在Django中使用pre_save,保存,post_save?

我将尽力用一个例子来解释它:

pre_save
post_save
是信号由模型发送。用简单的话来说,
save
就是在模型之前或之后调用的动作。

A

save

触发以下步骤

  • 发出预保存信号。
  • 预处理数据。
  • 大多数字段不进行预处理-字段数据保持不变。
  • 为数据库准备数据。
  • 将数据插入数据库。
  • 发出后保存信号。

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

现在,

pre_save
在实际保存到数据库之前,可以忽略信号进行某些处理-示例:(我不知道
pre_save
如何在头顶上找到一个理想的例子)

比方说,你有

ModelA
哪些商店参考所有的对象
ModelB

被编辑呢。为此,您可以注册一个
pre_save
信号,以便
ModelA
ModelB
save
方法被调用之前立即进行通知(
post_save
这也不会阻止您注册信号)。

现在,

save
调用模型的方法(不是信号)-默认情况下,每个模型都有一个
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

常见的用例是在系统中创建

UserProfile
对象时创建
User
对象。

您可以注册一个

post_save
信号,该信号创建一个
UserProfile
对应
User
于系统中每个对象的对象。

信号是使事物保持模块化和明确的一种方式。(明确通知

ModelA
save
或在中进行更改
ModelB

我将考虑更具体的现实世界示例,以更好地回答这个问题。同时,我希望这对您有帮助



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号