Нужна помощь в составлении запроса из модели django

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

вот код. #models.py

class CustomUser(AbstractUser):
    username = None
    phone_regex = RegexValidator(
        regex=r'^\+?1?\d{9,14}$', message="Phone number must be entered in the form of +129999999999.")
    phone_number = models.CharField(validators=[phone_regex], max_length=17, unique=True,
                                    verbose_name='Phone Number', blank=False)
    email = models.EmailField(_('email address'), unique=True)
    isPhoneVerified = models.BooleanField(
        verbose_name='Is Phone Number Verified?', default=False)
    isEmailVerified = models.BooleanField(
        verbose_name='Is Email Verified?', default=False)
    otp = models.CharField(max_length=6)
    

    USERNAME_FIELD = 'phone_number'
    REQUIRED_FIELDS = ['email']

    objects = CustomUserManager()

    def __str__(self):
        return self.phone_number + " | " + self.email

    # Method to Put a Random OTP in the CustomerUser table to get verified for the next time after save.
    def save(self, *args, **kwargs):
        number_list = [x for x in range(10)]  # list comprehension
        code_items = []

        for i in range(6):
            num = random.choice(number_list)
            code_items.append(num)

        code_string = "".join(str(item)
                              for item in code_items)  # list comprehension again
        # A six digit random number from the list will be saved in otp table
        self.otp = code_string
        super().save(*args, **kwargs)

функции отправки_otp

@receiver(post_save, sender=CustomUser)
def send_otp(sender, instance, created, **kwargs):
    if created:
        try:
            subject = "Your email needs to be verified"
            message = f'Hi, use this following OTP to Get verified your email : OTP({""})/' #here i want to put the otp table value for the user who is making the request. 

            email_from = settings.EMAIL_HOST_USER
            recipient_list = [instance.email]
            send_mail(subject, message, email_from, recipient_list)
        except Exception as e:
            print(e)

Я просмотрел документацию django, но не могу понять, как мы будем фильтровать точного пользователя, который делает запрос. помощь будет признательна. спасибо.

Решение находится в вашей функции send_otp. recipient_list = [instance.email] Используйте тот же подход, что и при выборе электронной почты, таким же образом вы можете выбрать OTP.

Правильный код:

@receiver(post_save, sender=CustomUser)
def send_otp(sender, instance, created, **kwargs):
    if created:
        try:
            subject = "Your email needs to be verified"
            message = f'Hi, use this following OTP to Get verified your email : OTP({instance.otp})/' #here i want to put the otp table value for the user who is making the request. 

            email_from = settings.EMAIL_HOST_USER
            recipient_list = [instance.email]
            send_mail(subject, message, email_from, recipient_list)
        except Exception as e:
            print(e)
Вернуться на верх