TIL Qオブジェクトとは?


Django model ORMは、whereセクションでor文を使用するときにQオブジェクトを使用することを示します.
今回westeargramを作成する際にqオブジェクトを使用しました.
qオブジェクトを使用する前に
if Signup.objects.filter(email = email).exists():
    return JsonResponse({'message': '이메일값이 중복되었습니다.'},
    status= 401)

if Signup.objects.filter(nickname = nickname).exists():
    return JsonResponse({'message': '닉네임값이 중복되었습니다.'},
    status= 401)

if Signup.objects.filter(phone_number = phone_number).exists():
    return JsonResponse({'message': '핸드폰번호가 중복되었습니다.'},
    status= 401)
   
qオブジェクトを使用した後

if User.objects.filter(
    Q(nickname = nickname) | Q(phone_number = phone_number) | Q(email = email)):
                
    return JsonResponse({'message': '입력값이 중복되었습니다.'}, status= 409)
知るところ

  • Qオブジェクトを使用する場合は簡略化(and orとは無関係)のためであることは知っていますが、qオブジェクトをさらに検索すると、or文を使用する場合にのみ使用されることがわかります.

  • この繰返し値についても、エラーはbad requestで、最初はエラー値が401だと思っていましたが、指導者はこの部分をもっと検索してみました.その結果、繰返しには409のエラーがあることがわかりました.