Исключение: Соответствующий запрос не существует

Я пытаюсь сгенерировать токен для пользователей, запрашивающих "забыть пароль". У меня есть модель для обработки и хранения этого.

models.py


class ForgetPassword(models.Model):

    user = models.ForeignKey(CustomUser, on_delete= models.CASCADE)
    forget_password_token = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add= True)

    def __str__(self):
        return self.user.email

Ниже приведены функции представления, которые обрабатывают запрос

views.py

def forget_password(request):

    try:

        if request.method == 'POST':
            user_email = request.POST.get('email')

            if CustomUser.objects.filter(email = user_email).exists():
                
                user_obj = CustomUser.objects.get(email = user_email)

                name = user_obj.full_name
                plan = user_obj.plan

                print("\n this is the user : ", user_obj, " this is its name : ", name,"\n")

                token = str(uuid.uuid4())
                
                fp = ForgetPassword.objects.get(user = user_obj)
                fp.forget_password_token = token
                fp.save()

                forget_password_mail.delay(user_email, name, token)
                messages.info(request, 'An email has been sent to your registered email.')
                return redirect('forget-password')  
            else:
                messages.info(request, 'User does not exist')
                return redirect('forget-password')   

    except Exception as e:

        print("\nthe exception is comming from forget_password : ", e, "\n")
    
    return render(request, 'fp_email_form.html')

Итак, я пытаюсь получить пользователя сначала в user_obj из моей модели CustomUser, а затем я пытаюсь получить того же пользователя в модели ForgetPassword и сохранить токен для этого пользователя. Но я получаю следующее исключение

ForgetPassword matching query does not exist.

Пожалуйста, подскажите или поправьте меня, где я ошибаюсь.

У вас нет объекта ForgetPassword, связанного с объектом пользователя, который вы пытаетесь получить,

fp = ForgetPassword.objects.get(user = user_obj) Вместо этого следует использовать get_or_create.

ссылка

Вернуться на верх