首先我使用 django 1.8.3 。你应该先注册你的信号。据我所知,有一些方法可以做到这一点,但这就是我正在做的;
在您的应用中创建signals.py 并在其中写入您的信号;
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=your_model,dispatch_uid="yourmodel_save_receiver")
def post_save_yourmodel(sender, instance, **kwargs):
if instance.profile_status:
print "active"
else:
print "not active"
那么你应该创建apps.py。此文件包含模型的配置信息。
from django.apps import AppConfig
class yourmodel_config(AppConfig):
name = 'yourmodel_config'
verbose_name = 'your_model config'
def ready(self):
import yourmodel.signals
只要您的应用准备就绪,您的信号就会被导入
最后打开你的__init__.py 并添加以下内容。
default_app_config = 'yourmodel.apps.yourmodel_config'
通过这个,您可以为您的模型定义应用程序配置。此示例在保存yourmodel 时,会检查profile_status 属性并根据值(true 或false)将输出打印到您的控制台。您还可以将created 参数添加到您的模型中,以了解是否创建了模型实例。如果创建了新记录,created 将返回 True。 def post_save_yourmodel(sender, instance, created, **kwargs):。否则,只要您的模型使用yourmodel.save() 保存,就会触发此信号。
考虑这是一个post_save 示例。您可以从here 找到模型信号列表。