Запросы к модели django

Мне необходимо взять все данные из модели и осуществить проверку. Если переменная id не совпадает со значением в поле user_id в модели то необходимо выполнять return render(request, 'index/telegram.html') Код:

 id = request.GET["id"]
 user_id = users.objects.get(user_id=id)
 if(user_id != ""):
      phonenumber = user_id.phonenumber
      request.session['phonenumber'] = phonenumber
 else:
      return render(request, 'index/telegram.html')

В таком случае выдаётся ошибка если user_id!=id, а мне надо создать проверку на совпадение переменной id со значениями в поле модели user_id


Ответы (1 шт):

Автор решения: Roman Konoval

Первая проблема - users.objects.get(user_id=id). Должно быть так User.objects.get(user_id=id), если вы используете стандартную таблицу пользователей django.

Далее функция get возвращает объект пользователя, если такой существует в БД. Если же объекта с таким идентификатором не существует, то функция бросает исключение. Вам его нужно обработать.

Еще одно некритичное замечание: get возвращает объект пользователя, поэтому переменную лучше назвать user, а не user_id.

Итого имеем:

id = request.GET["id"]
try:
    user = User.objects.get(user_id=id)
    phonenumber = user.phonenumber
    request.session['phonenumber'] = phonenumber
except User.DoesNotExist:
    return render(request, 'index/telegram.html')
→ Ссылка