我需要在数据库中注册电子邮件并将其发送到已注册的电子邮件,但是我不能。 如果我手动输入电子邮件,它可以毫无问题地发送,但是我需要它来获取在Pessoa中注册的电子邮件,以便在MovRotativo中使用,以便在付款完成后立即发送
错误 “ / sistema / mov-rot-novo /中的TypeError “ Pessoa”类型的对象没有len()”
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 Pessoa(models.Model):
nome = models.CharField(max_length=50, blank=False)
email = models.EmailField(blank=False)
cpf = models.CharField(max_length=11, unique=True, blank=False)
endereco = models.CharField(max_length=50)
numero = models.CharField(max_length=10)
bairro = models.CharField(max_length=30)
telefone = models.CharField(max_length=20, blank=False)
cidade = models.CharField(max_length=20)
estado = models.CharField(max_length=2, choices=STATE_CHOICES)
def __str__(self):
return str(self.nome) + ' - ' + str(self.email)
class MovRotativo(models.Model):
checkin = models.DateTimeField(auto_now=False, blank=False, null=False,)
checkout = models.DateTimeField(auto_now=False, null=True, blank=True)
email = models.ForeignKey(Pessoa, on_delete=models.CASCADE, blank=False)
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 send_email(self):
if self.pago == 'Sim':
send_mail(
'Comprovante pagamento Estacione Aqui 24 Horas',
'Here is the message.',
'estacioneaqui24@gmail.com',
recipient_list=[self.email],
fail_silently=False,
)
答案 0 :(得分:0)
在MovRotativo
中,email
不是EmailField
,而是类Pessoa
的实例。您需要email
中的Pessoa
中的email.email
:
recipient_list=[self.email.email],
答案 1 :(得分:0)
由于电子邮件是 Pessoa ,因此您需要使用对象电子邮件,并且您将其命名为电子邮件。.由于您正在进行联接以获取电子邮件...您需要引用它。请使用 email.email ,因为它希望 Pessoa.email 有所帮助。我还增加了一条额外的行来验证电子邮件是否为空。
class MovRotativo(models.Model):
checkin = models.DateTimeField(auto_now=False, blank=False, null=False,)
checkout = models.DateTimeField(auto_now=False, null=True, blank=True)
email = models.ForeignKey(Pessoa, on_delete=models.CASCADE, blank=False)
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 send_email(self):
if self.pago == 'Sim':
if email.email:
send_mail(
'Comprovante pagamento Estacione Aqui 24 Horas',
'Here is the message.',
'estacioneaqui24@gmail.com',
recipient_list=[self.email.email],
fail_silently=False,
)