Django 注册新问题时如何向特定用户发送电子邮件

Django 注册新问题时如何向特定用户发送电子邮件,django,django-views,Django,Django Views,我想向所有教授与新问题(无论是由管理小组还是问题创建表创建的)相关主题的教师发送一封电子邮件,以便他们可以批准该问题。如何做到这一点 models.py class Usuario(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,verbose_name="Usuário") USUARIO_CHOICES = ( (UM,'Aluno'), (DO

我想向所有教授与新问题(无论是由管理小组还是问题创建表创建的)相关主题的教师发送一封电子邮件,以便他们可以批准该问题。如何做到这一点

models.py

class Usuario(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,verbose_name="Usuário")
    USUARIO_CHOICES = (
        (UM,'Aluno'),
        (DOIS,'Professor'),
    )
    tipoUsuario = models.IntegerField('Tipo de Usuário',choices=USUARIO_CHOICES,default=1)

class Questao(models.Model):
    aOpcao = models.CharField(max_length=500,null=False,blank=True,verbose_name="Letra a")
    bOpcao = models.CharField(max_length=500,null=False,blank=True,verbose_name="Letra b")
    cOpcao = models.CharField(max_length=500,null=False,blank=True,verbose_name="Letra c")
    dOpcao = models.CharField(max_length=500,null=False,blank=True,verbose_name="Letra d")
    eOpcao = models.CharField(max_length=500,null=False,blank=True,verbose_name="Letra e")
设置.py

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myemail@outlook.com'
EMAIL_HOST_PASSWORD = 'Mypassword'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'MySite <myemail@outlook.com>'
forms.py

class QuestaoForm(forms.ModelForm):
    aOpcao = forms.CharField(max_length=500,label="Letra a")
    bOpcao = forms.CharField(max_length=500,label="Letra b")
    cOpcao= forms.CharField(max_length=500,label="Letra c")
    dOpcao = forms.CharField(max_length=500,label="Letra d")
    eOpcao = forms.CharField(max_length=500,label="Letra e")
    class Meta:
       model = Questao
       fields = '__all__' 

请查看以下文档:


Django post save信号是在特定的DB操作之后执行代码的一种很好的方法。在您的情况下,我认为您需要创建一个post_save信号来触发电子邮件的发送。

您可以连接到问题模型的post_save信号并相应地处理它,请参阅
class QuestaoForm(forms.ModelForm):
    aOpcao = forms.CharField(max_length=500,label="Letra a")
    bOpcao = forms.CharField(max_length=500,label="Letra b")
    cOpcao= forms.CharField(max_length=500,label="Letra c")
    dOpcao = forms.CharField(max_length=500,label="Letra d")
    eOpcao = forms.CharField(max_length=500,label="Letra e")
    class Meta:
       model = Questao
       fields = '__all__'