文章转自:https://blog.youkuaiyun.com/qq_37049050/article/details/81746046
Django中如何在Model保存前做一定的固定操作,比如写一句日志?
关键词: 信号
利用Django的Model的Signal Dispatcher, 通过django.db.models.signals.pre_save() 方法,在事件发生前,
发射
触发信号,这一切都被调度中的receiver方法深藏功与名的保存了。
信号的处理一般都写在Model中,举个例子:
import logging
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
class Order(models.Model):
# ...
logger = logging.getLogger(__name__)
@receiver(pre_save, sender=Order)
def pre_save_handler(sender, **kwargs):
# 我们可以在Order这个Model保存之前尽情调戏了:)
logger.debug("{}".format(sender, **kwargs))
print 'fuck universe'
这样应该就实现了题中的要求,类似的方法还有比如 pre_init 是在Model实例之前会触发, post_init 在实例之后触发,同理就是 pre_save 和 post_save 了。
本文介绍如何在Django的Model保存前后使用信号机制来触发特定操作,例如记录日志等。通过使用pre_save信号,可以实现在保存Model实例之前执行自定义函数。
3123

被折叠的 条评论
为什么被折叠?



