Как я могу отправить напоминание по электронной почте до 1 дня мероприятия в Django?

#django #django-models #django-forms #django-views #scheduled-tasks

#django #django-модели #django-формы #django-просмотры #запланированные задачи

Вопрос:

У меня есть три модели.

  1. CustomUser
  2. Webregister
  3. Zlink

И ниже приведен код для Zlink в models.py,

 class Zlink(models.Model):
    customUser = models.ForeignKey(CustomUser, on_delete=models.CASCADE) #foreignkey 1
    webregister = models.ForeignKey(Webregister, on_delete=models.CASCADE) #foreignkey 2
    reg_link = models.CharField(max_length=255,null=True, blank=True)
    def __str__(self):
        return str(self.pk)
  

«foreignkey 2» дает мне идентификатор события, а «foreignkey 1» дает мне адрес электронной почты пользователя.

Среди многих полей одно из полей в Webregister является event_starts тем, которое содержит дату и время события, когда оно начнется.

Я могу получить адрес электронной почты пользователя в событии, используя запуск запроса,

 x = Zlink.objects.get(id=1)
x.customUser
  

Теперь, если у пользователя несколько пользователей, то как на этот адрес электронной почты отправлять электронное письмо с напоминанием до дня события?

Есть какие-либо подсказки? Я новичок в Django, пожалуйста.

Ответ №1:

Сценарий 1 (если пользовательская модель пользователя имеет только одно поле электронной почты):

 x = Zlink.objects.get(id=1)
email_to_list = [x.customUser.email,]
  

Сценарий 2 (если пользовательская модель пользователя имеет два поля электронной почты):

 x = Zlink.objects.get(id=1)
email_to_list = [x.customUser.primary_email, x.customUser.secondary_email]
  

Наконец, используйте следующий код для отправки почты (при условии, что у вас есть рабочие настройки smtp, определенные в settings.py )

 from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    email_to_list,
    fail_silently=False,
)