Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 多个相关型号的post_保存信号_Django_Django Models_Django Signals - Fatal编程技术网

Django 多个相关型号的post_保存信号

Django 多个相关型号的post_保存信号,django,django-models,django-signals,Django,Django Models,Django Signals,我需要触发某些型号的任何更改。我的型号是:品牌、产品、包装包装有fk到产品和产品有fk到品牌。所以,当这些模型的某些实例被更改、创建或删除时,我需要发送信号。我可以用post\u save信号来实现它吗?我想,如果我为较低型号写入post\u save信号:Package,则会触发品牌或产品的任何更改。但这不是为什么你的信号没有被触发?Django的post_save在模型的save()方法()末尾触发。更新软件包时,产品仍然只包含软件包型号的密钥。所以Product没有调用save() 您可以

我需要触发某些型号的任何更改。我的型号是:品牌、产品、包装<代码>包装有
fk
产品
和产品有
fk
品牌
。所以,当这些模型的某些实例被更改、创建或删除时,我需要发送信号。我可以用
post\u save
信号来实现它吗?我想,如果我为较低型号写入
post\u save
信号:
Package
,则会触发
品牌
产品
的任何更改。但这不是为什么你的信号没有被触发?Django的
post_save
在模型的
save()
方法()末尾触发。更新
软件包
时,
产品
仍然只包含
软件包
型号的密钥。所以
Product
没有调用
save()

您可以做什么:

  • 创建几个
    post\u save
    信号
  • 覆盖模型的
    save()
    方法
  • 要绑定多个
    post\u save
    信号,只需执行以下操作:

    post_save.connect(do_package_stuff, Package, weak=False, dispatch_uid='package_post_save')
    post_save.connect(do_product_stuff, Product, weak=False, dispatch_uid='product_post_save')
    post_save.connect(do_brand_stuff, Brand, weak=False, dispatch_uid='brand_post_save')
    

    save()。您可以查看您是否对更好的方法不感兴趣。

    post\u save
    模型的
    save
    方法相关联。因此,只有当特定的
    save
    方法被触发时,它才会被执行。您必须为每个模型写入post\u save信号