>Models:
我有三个模型:
数据包、项目和事务。
数据包型号:
class Packet(models.Model):
"""
Packet model
"""
#Some Fields
项目型号:
class Item(models.Model):
"""
Item model class
"""
packet = models.ForeignKey(Packet,
verbose_name='related packet',
)
#Some Fields
@receiver(pre_delete)
def copy_item_details(sender, instance, **kwargs):
"""
:param sender:
:param instance:
:param kwargs:
:return:
"""
#Some code
交易模式:
class Transaction(models.Model):
"""
Transaction Model
"""
packet = models.ForeignKey(Packet,
verbose_name='related packet',
)
#Some Fields
我的问题是如果我尝试删除事务类的实例。正在执行项模型类中定义的方法 (copy_item_details)。为什么会这样???? copy_item_details
应仅在删除 Item 模型类的实例时执行。
在@receiver
定义中指定信号的发送方:
@receiver(pre_delete, sender=Item)
def copy_item_details(sender, instance, **kwargs):
"""
:param sender:
:param instance:
:param kwargs:
:return:
"""
#Some code
注意:信号应放置在 signals.py 而不是模型中。根据Django文档:
"严格来说,信号处理和注册码可以活 任何你喜欢的地方,尽管建议避免 应用程序的根模块及其模型模块最小化 导入代码的副作用。
在实践中,信号处理程序通常在信号中定义 它们相关的应用程序的子模块。
这是给您的链接。