我需要触发某些模型的任何更改。我的模特是:品牌,产品,包装。 Package
有fk
到Product
,而产品有fk
到Brand
。因此,当更改或创建或删除这些模型的某些实例时,我需要发送信号。我可以用post_save
信号实现吗?我想如果我为较低的模型post_save
写下Package
信号,那么将触发Brand
或Product
的任何更改。但它不是
答案 0 :(得分:0)
为什么没有触发你的信号? Django的post_save
在模型的save()
方法(docs)结束时触发。当您更新Package
时,Product
仍然只包含Package
模型的密钥。因此Product
未调用save()
。
你能做什么:
post_save
信号。save()
方法。要绑定多个post_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')
Overriding save()
更容易(我可以说更多的推荐)。如果您对更好的事情感兴趣,可以看this question。