Я пытался отправлять электронные письма, когда в мое приложение отправляется форма, и мне удалось это сделать, но по какой-то причине он отправляет ее дважды каждый раз.После некоторого поиска и отладки я думаю, что знаю, в чем проблема, но я не знаю почему.
Таким образом, функция отправки электронной почты моего приложения выполняется в моих формах.py и выглядит так:
class approvalForm(forms.ModelForm):
text1 = forms.ModelChoiceField(disabled = True, queryset = Visit.objects.all())
text2 = forms.ChoiceField(disabled = True, choices = poolnumber)
def save(self, commit=False):
instance = super(approvalForm, self).save(commit=commit)
ready = instance.visible
if ready is True:
self.send_email()
print('yay sent')
else:
None
return instance
def send_email(self):
var = self.cleaned_data
tomail = self.cleaned_data.get('visit')
tomails = tomail.location.users.all()
tomaillist = []
for item in tomails:
tomaillist.append(item.email)
print(tomaillist)
msg_html = render_to_string('myapp/3email.html', {'notify': var})
msg = EmailMessage(
'Text here',
msg_html,
'myemail@email.com',
tomaillist,
headers={'Message-ID': 'foo'},
)
msg.content_subtype = "html"
print("Email sent")
msg.send()
class Meta:
model = MyModels
fields = ('text1','text2', )
Функция save () запускается 2 раза.Я пытался переместить функцию отправки электронной почты в views.py в функцию form_valid (), но она никогда не вызывалась, поэтому я попробовал form_invalid (), но результаты те же.
Есть ли способ непозволить функции save () запускаться 2 раза?Или это из-за ошибки в моем коде?
Спасибо!