Почему я получаю эту ошибку "cannot unpack non-iterable bool object"?

я получаю эту ошибку "cannot unpack non-iterable bool object", когда я пытаюсь получить пользовательский ввод из формы в django, которая в данном случае является электронной почтой

def send_email(request):
  recepient_list=[]
  if request.method == "POST":
        email = request.POST['pwd_email']
        print(email)
        if User.objects.filter(email == email).exists:
              recepient_list.append(email)
              send_mail("PASSWORD RESET", f"Your password resetkey is {random_no} \n Do not share this key with anyone", "eliaakjtrnq@gmail.com",recepient_list,fail_silently=False,)
              recepient_list.clear()

Строка, которая, как мне кажется, вызывает у вас затруднения, выглядит так:

if User.objects.filter(email == email).exists:

Есть две проблемы, которые я вижу:

  1. Вы должны использовать присваивание "=", а не проверку на равенство "=="
  2. Я считаю, что eixsts() - это метод, а не атрибут, поэтому вам нужно включить "()"

Попробуйте изменить эту строку на:

if User.objects.filter(email=email).exists():

и посмотрите, сохраняется ли ошибка.

Здесь есть несколько проблем, главная из которых .filter(email == email). Он проверяет, равна ли строка самой себе, и поэтому всегда True, вы, таким образом, используете .filter(True), а Django, конечно, не может многого сделать с bool.

Вы должны фильтровать с помощью:

def send_email(request):
    recepient_list = []
    if request.method == 'POST':
        email = request.POST['pwd_email']
        print(email)
        #                      ***call*** .exists() 🖟
        if User.objects.filter(email=email).exists():
            recepient_list.append(email)
            send_mail(
                'PASSWORD RESET',
                f"Your password resetkey is {random_no} \n Do not share this key with anyone",
                'eliaakjtrnq@gmail.com',
                recepient_list,
                fail_silently=False,
            )
            recepient_list.clear()
Вернуться на верх