最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Django中的模型信号有哪些

    正文概述    2020-01-20   377

    模型信号

    django.db.models.signals模块定义了模型系统发送的一组信号。

    pre_init

    django.db.models.signals.pre_init

    每当您实例化Django模型时,该信号都会在模型的__init__()方法的开头发送。

    带有此信号的参数:

    sender:刚创建了一个实例的模型类。

    ARGS:传递给__init__()的位置参数列表:

    kwargs:传递给__init__()的关键字参数的字典:

    例如:

    from app01 import models
    p = models.Publisher(name='沙河出版社')

    发送到pre_init处理程序的参数将是:

    Django中的模型信号有哪些pre_save

    django.db.models.signals.pre_save

    这是在模型的save()方法的开头发送的。

    带有此信号的参数:

    sender:模型类。

    instance:正在保存的实际实例。

    raw:一个布尔值True如果模型按照显示的方式保存(即当加载固定装置时)。不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。

    using:正在使用的数据库别名。

    update_fields:如果有字段被传递给Model.save()方法那么就是所传递的字段集,否则就是None。

    post_save

    django.db.models.signals.post_save

    像pre_save一样,但是在save()方法的末尾发送。

    带有此信号的参数:

    sender:模型类。

    instance:正在保存的实际实例。

    created:一个布尔值True如果创建了新记录。

    raw:一个布尔值True如果模型按照显示的方式保存(即当加载固定装置时)。 不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。

    using:正在使用的数据库别名。

    update_fields:如果有字段被传递给Model.save()方法那么就是所传递的字段集,否则就是None。

    相关推荐:《Python视频教程》

    pre_delete

    django.db.models.signals.pre_delete

    在模型的delete()方法和queryset的delete()方法的开头发送。

    带有此信号的参数:

    sender:模型类。

    instance:正在删除的实际实例。

    using:正在使用的数据库别名。

    post_delete

    django.db.models.signals.post_delete

    像pre_delete一样,但是在模型的delete()方法和queryset的delete()方法的末尾发送。

    带有此信号的参数:

    sender:模型类。

    instance:正在删除的实际实例。

    请注意,该对象将不再位于数据库中,所以要非常小心使用此实例。

    using:正在使用的数据库别名。

    m2m_changed

    django.db.models.signals.m2m_changed

    在模型实例上更改了ManyToManyField时发送。 严格来说,这不是一个模型信号,因为它是由ManyToManyField发送的,但由于它补充了pre_save / post_save和pre_delete / post_delete当跟踪模型的更改时,它包括在这里。

    带有此信号的参数:

    sender:描述ManyToManyField的中间模型类。 当定义多对多字段时,此类自动创建;您可以使用多对多字段上的through属性访问它。

    instance:多对多关系更新的实例。 这可以是sender或ManyToManyField相关的类的一个实例。

    action:指示在关系上完成的更新类型的字符串。 这可以是以下之一:

    “pre_add”:在之前发送一个或多个对象被添加到关系中。

    “post_add”:在之后发送一个或多个对象被添加到关系中。

    “pre_remove”:在之前发送一个或多个对象从关系中删除。

    “post_remove”:在之后发送一个或多个对象从关系中删除。

    “pre_clear”:在之前发送关系被清除。

    “post_clear”:之后发送关系被清除。

    reverse:指示关系的哪一侧被更新(即,如果它是正在被修改的正向或反向关系)。

    model:添加到,从关系中删除或从关系中清除的对象的类。

    pk_set:对于pre_add,post_add,pre_remove和post_remove操作,这是一组主键值加入或从关系中删除。

    对于pre_clear和post_clear操作,这是None。

    using:正在使用的数据库别名。

    class_prepared

    django.db.models.signals.class_prepared

    每当模型类“准备”时发送 - 即,一旦模型已经被定义并在Django的模型系统中注册。 Django内部使用这个信号;它通常不会用于第三方应用程序。

    由于此信号是在应用程序注册表群集进程期间发送的,并且在应用注册表完全填充后运行AppConfig.ready(),因此无法使用该方法连接接收器。 一种可能性是连接他们AppConfig.__init__(),注意不要导入模型或触发对应用程序注册表的调用。

    使用此信号发送的参数:

    sender:ready的model类。

    相关推荐:

    Django中的信号是什么


    下载网 » Django中的模型信号有哪些

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元