Django信号:实现模型间优雅的解耦与协作
from django.db.models import signals
from django.dispatch import receiver
class MyModel(models.Model):
# 定义模型字段等...
# 当创建模型实例时,会触发此信号
@receiver(signals.post_save, sender=MyModel)
def handle_my_model_save(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
# 执行创建新实例时的额外逻辑
pass
else:
# 执行更新实例时的额外逻辑
pass
这个例子展示了如何在Django中使用信号来响应模型的保存动作。当MyModel
的实例被创建或更新时,handle_my_model_save
函数会被调用,并且根据实例是否被创建还是更新来执行不同的逻辑。这种方式可以使得业务逻辑与模型的具体实现解耦,增强代码的可维护性和可读性。
评论已关闭