[django] Q 객체란?

뚜니어리·2024년 1월 15일
0

Django

목록 보기
3/3

Django 에서 Q란?

장고의 ORM에서 복잡한 데이터베이스 쿼리를 구성할 때 사용.

내가 사용했던 Q의 객체는

class UserAuctionListView(APIView):
    permission_classes = [IsAuthenticated]
    # 경매 주최자 or 경매 낙찰자가 해당 유저인 경매 목록
    def get(self, request, user_pk):
        auction_rooms = AuctionRoom.objects.filter(Q(auction_host=user_pk) | Q(auction_winner=user_pk))
        serializer = AuctionRoomSerializer(auction_rooms, many=True)
        return Response(serializer.data,  status=status.HTTP_200_OK)

이 부분 이였다.

Q 객체 쿼리를 사용한 이유는,
경매 주최자와 경매 낙찰자를 AuctionRoom 에서 한번에 필터링 하기 위해 사용했다.
다른 조건문을 사용해서 필터링을 이용할 수 있었지만,
Q라는 객체는 데이터베이스에서 여러 조건을 적용해서 OR , AND 연산자와 조합해서 사용하기에 유용하다고 해서 사용했다.

Q() 은 AuctionRoom.objects.all() 과 똑같다.
AuctionRoom 전체를 변수에 담아두고, q변수 안에 조건들을 넣어주는 느낌이라고 생각하면 된다.


F 객체

번외로 F 객체도 있다.
F객체는 데이터베이스 쿼리에서 필드간의 비교를 수행하기위해 사용된다.
예를들어 하나의 필드 값을 다른 필드 값과 비교하거나, 두 필드값을 결합하여 쿼리를 작성하는데 사용할 수 있다.

profile
삽질과 저장소의 그 중간

0개의 댓글