Django如何使用post_save信号

use*_*ser 3 django

我已经了解了django信号但是,我不知道在我的项目中实现的位置以及如何在我的项目中使用它.在我的项目中,我想发送电子邮件警报,如果它符合某些特定标准.在这种情况下,我需要使用post_save信号.我添加了代码.请分享您的想法.

models.py

class Personal(models.Model):
    user = models.OneToOneField(User)
    email = models.EmailField(max_length=100, blank=True, null=True)
    country = models.CharField(max_length=100, blank=True, null=True)
    state = models.CharField(max_length=100, blank=True, null=True)
    city = models.CharField(max_length=100, blank=True, null=True)

class Skills(models.Model):
    user = models.ForeignKey(User)
    skill = models.CharField(max_length=100, blank=True, null=True)

class jobs(models.Model):
    emp = models.ForeignKey(User, unique=False)
    title = models.CharField(max_length=100)
    industry = models.CharField(max_length=100)
    functionalarea = models.CharField(max_length=100)
    min_exp = models.IntegerField(default=0)
    max_exp = models.IntegerField(default=0)
    city = models.CharField(max_length=100)
    state = models.CharField(max_length=100)
    country = models.CharField(max_length=100)
    empskills = models.CharField(max_length=100, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

在这里,我希望将jobs和empills.skill模型匹配city和empskills of jobs表.如果每个作业都匹配任何一个字段,它将自动发送邮件到personal.email,则会发生此事件.请举例说明信号的使用位置和使用方法.

Emi*_*yan 10

在模型外部编写一个函数,用于处理发布新作业的时间并找到要发送电子邮件的人员.

然后,您指定Jobsender一个post_save信号和连接功能.

from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=Job)
def handle_new_job(sender, **kwargs):
    job = kwargs.get('instance')
    logger.info("POST_SAVE : Job : %s" % job)
    # find people to email based on `job` instance
Run Code Online (Sandbox Code Playgroud)

  • @用户那么你不应该只是复制并粘贴代码。如果您想要记录“导入日志记录”并获取“记录器”,否则只需删除该行。 (2认同)