在model create-django上发送电子邮件



我想在创建发票时自动发送电子邮件。这可能吗?我追求的是什么。我有一个发票模型,我在里面放了send_email代码";CCD_ 1";,我正在制作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信号或芹菜。

最新更新