在模型创建时发送电子邮件 - django

send email on model create - django

我想在创建发票时自动发送一封电子邮件。那可能吗?我在追求什么。我有一个发票模型,我在其中放入 send_email 代码“def save(self):”,我正在制作 perfex CRM 发票系统,所以我在发票模型中使用 foregin 键来获得客户,但是每当我创建新发票时,它都会说“发票“INV-b066”已成功添加。”但是在发票模型中它没有显示任何东西,就像它是空模型我什至尝试使用索引号打开发票并重新启动服务器和迁移东西但它没有用但是如果我删除 def save(self): 函数它工作得很好我是尝试在模型创建时自动发送电子邮件

客户模型

class Customers(models.Model):
    Your_Name = models.CharField(max_length=220)
    Email_Address = models.EmailField(max_length=220)
    Profession = models.CharField(max_length=220)
    phone = PhoneNumberField(unique=True)
    No_of_Persons = models.IntegerField()
    Packages = models.CharField(choices=PAKAGES, max_length=100)
    Address = models.CharField(max_length=220)
    City = models.CharField(choices=CITIES, max_length=10)
    Time = models.CharField(choices=TIME, max_length=10)
    Date = models.DateTimeField()
    Message = models.TextField()

    def __str__(self):
        return f'{self.Your_Name}'

发票模型

class Invoice(models.Model):
    Customer = models.ForeignKey(Customers, on_delete=models.CASCADE)
    Invoice_Number = models.CharField(default=inv_num, max_length=10)
    Recurring = models.CharField(choices=Recurrings, max_length=12)
    Invoice_date = models.DateField()
    Due_date = models.DateField()
    Packages = models.CharField(choices=PAKAGES, max_length=100)
    Package_name = models.CharField(max_length=50)
    Package_description = models.TextField()
    Package_Quantity = models.IntegerField()
    Package_Price = models.IntegerField()

    def __str__(self):
        return f'{self.Invoice_Number}'

    def save(self):
        send_mail(
            'Subject',
            'message.',
            'email@example.com',
            ['*****@gmail.com'],
            fail_silently=False,
        )

您必须像这样实际保存发票:

def save(self):
    send_mail(
        'Subject',
        'message.',
        'email@example.com',
        ['*****@gmail.com'],
        fail_silently=False,
    )
    return super(Invoice, self).save()

另外,作为建议的一部分,最好将电子邮件作为单独的任务或服务发送,您可以为此使用 django 信号或芹菜。