"Соответствующий запрос не существует" при создании объекта
У меня есть:
class GoogleSignIn(APIView):
def post(self, request):
settings = request.settings
code = request.data['code']
# Verify the OAuth code with Google
try:
google_user_info = verify_user(code)
except Exception as e:
print(str(e))
return Response({'error': 'Failed to verify with Google.'})
email = google_user_info['email']
picture = google_user_info['picture']
try:
user = User.objects.get(email=email)
user_info = UserInfo.objects.get(user=user)
except User.DoesNotExist:
first_name = google_user_info['given_name']
user = User.objects.create_user(
email = email,
username = email,
first_name = first_name,
last_name = google_user_info['family_name'],
password=None)
user_info = UserInfo.objects.create(
user = user,
credits = request.settings.INITIAL_CREDITS,
expiry = compute_credits_expiry(
num_days=settings.FREE_CREDITS_EXPIRY_IN_DAYS))
Последнее утверждение (то есть создание объекта UserInfo
в обработчике исключений) приводит к возникновению исключения:
accounts.models.UserInfo.DoesNotExist: UserInfo matching query does not exist.
Что это значит?
Полный вывод:
Ваш блок try except перехватывает только исключение User.DoesNotExist
, таким образом UserInfo.DoesNotExist
не обрабатывается, если вы хотите обработать его таким же образом, вы можете сделать
# previous code
except (User.DoesNotExist, UserInfo.DoesNotExist):
# handle your exception
или вы можете обрабатывать их по отдельности следующим образом
# previous code
except User.DoesNotExist:
# handle case where user doesn't exist
except UserInfo.DoesNotExist:
# handle case where USerInfo doesn't exist