Django Отправить письмо не показывает ошибку - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю систему парковки с опцией Оплачено и Не оплачено, и только когда выбранная форма оплачена, я хочу, чтобы система отправила электронное письмо с подтверждением платежа.Я могу отправить электронное письмо через консоль, но через систему не будет и не будет отображаться ошибка

models.py

from django.db import models
from django.core.mail import send_mail
import math

PAGO_CHOICES = (
('Não', 'Não Pago'),
('Sim', 'Pago')
)

class MovRotativo(models.Model):
    checkin = models.DateTimeField(auto_now=False, blank=False, null=False,)
    checkout = models.DateTimeField(auto_now=False, null=True, blank=True)
valor_hora = models.DecimalField(
    max_digits=5, decimal_places=2, null=False, blank=False)
veiculo = models.ForeignKey(
    Veiculo, on_delete=models.CASCADE, null=False, blank=False)
pago = models.CharField(max_length=15, choices=PAGO_CHOICES)

def horas_total(self):
    if self.checkout is None:
        return self.checkout == 0
    else:
        return math.ceil((self.checkout - self.checkin).total_seconds() / 3600)

def total(self):
    return self.valor_hora * self.horas_total()

def __str__(self):
    return self.veiculo.placa

def send_email(self):
    if self.pago == 'Sim':
        send_mail(
            'Comprovante pagamento estacionamento',
            'Here is the message.',
            'estacioneaqui24@gmail.com',
            ['estacioneaqui24@gmail.com'],
            fail_silently=False,
        )

1 Ответ

0 голосов
/ 26 ноября 2018

Похоже, вам не хватает сигнала или переопределения для метода save().Я приведу вам пример сигнала.Я оставил несколько утверждений для печати, чтобы вы могли получить лучшее представление.

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

@receiver(post_save, sender=MovRotativo)
def before_movrotativo_save(sender, **kwargs):
    print(kwargs)
    instance = kwargs['instance']
    if instance.pago == 'Sim':
       print('Send email')
       instance.send_email()

Вот мой пример того, как проверить это из shell:

python manage.py shell
>>> from application.models import MovRotativo
>>> from django.utils import timezone
>>> c = MovRotativo.objects.create(valor_hora=2, checkin=timezone.now())
>>> c.pago = 'Sim'
>>> c.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...