Что возвращает Django, когда не может найти объект? - PullRequest
1 голос
/ 16 июня 2011

Я делаю запрос к базе данных и хочу что-то сделать, если запрос ничего не возвращает, но я получаю сообщение об ошибке:

user = User.objects.get(name=Jack)
if (user == NULL):
    # something

Я получаю запрос на совпадение пользователя не существует.

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

Django ничего не «возвращает», вместо этого выдает ошибку, поэтому вы не можете перейти к тесту if.

Вместо этого поместите код в попытку, например,

    try: 
      user = User.objects.get(name="Jack")
    except User.DoesNotExist:
      user = None

edit: упс, питон меня каждый раз получает;)

4 голосов
/ 16 июня 2011

Это выдает исключение .Возможно, вам следует попробовать поймать его .

3 голосов
/ 16 июня 2011

Вы захотите использовать что-то вроде этого. https://docs.djangoproject.com/en/1.3/ref/models/querysets/#get

try:
    user = User.objects.get(name="Jack")
except User.DoesNotExist:
    print "User does not exist"

Если вы просто переходите на страницу 404, вы можете использовать следующее https://docs.djangoproject.com/en/1.3/topics/http/shortcuts/#get-object-or-404

from django.shortcuts import get_object_or_404

user = get_object_or_404(User, name="Jack")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...