Ответ 1
Как говорит Крис в комментариях выше, ваш фрагмент действителен. Где-то еще в вашем коде вы можете ошибиться неправильно.
У вас может быть что-то вроде:
try:
do_something()
except User.MultipleObjectsReturned, User.DoesNotExist:
pass
вместо:
try:
do_something()
except (User.MultipleObjectsReturned, User.DoesNotExist):
pass
Без круглых скобок оператор except эквивалентен следующему в Python 2.6+
except User.MultipleObjectsReturned as User.DoesNotExist:
Экземпляр исключения User.MultipleObjectsReturned
перезаписывает User.DoesNotExist
.
Когда один и тот же процесс обрабатывает другой запрос позже, вы получаете
TypeError
, потому что ваш код пытается вызвать экземпляр исключения, который заменил User.DoesNotExist
.