[기업협업] 퀀텀AI -Day 12~14-

제갈창민·2022년 1월 10일
0

기업협업[퀀텀AI]

목록 보기
8/18
post-custom-banner

Lookin' for a better way to get up out of bed

(침대에서 일어나기 위한 좀 더 나은 방법을 찾고 있어)
[ 맥클모어 앤 라이언 루이스, "Can't Hold Us" ]

D

Damn... 목요일 하루종일 으슬으슬하고 두통이 미약하게나마 유지되더니, 금요일 아침엔 도저히 움직이기 힘든 상태가 되었다. 이미 3차까지 맞았으니 걱정을 별로 안하지만 혹시나 하는 생각에 사수님께 보고를 하고 재택으로 하기로 했다. 하지만 약 사먹고 기절한 후 온종일 골골거리느라 컴퓨터는 켜지도 못했다.ㅠ

R

Restfull 한 금요일을 보내고 조금 정신을 차린 토요일에 겨우 맡은 API를 마무리 할 수 있었다.(TIL 참고) 이번 API의 주요 기능은 검색과 'status' 값에 따른 데이터 변환 이었다. 검색의 경우에는 1) 이름만 검색 했을 때, 2) 상태만 검색 했을 때, 3) 둘 모두를 검색 했을 때, 이렇게 3가지 조건이 필요해서 Q객체를 사용하여 복합 조건문을 해결했다.

F

F객체처럼 Q객체도 쿼리가 사용되는 횟수를 줄여주기도 하지만, .filter()를 사용함에 있어서 복합적이고 다중적인 조건 연산도 가능하게 해준다.(AND 조건과 OR 조건 두 가지를 섞어서 사용하는 것도 가능하다)

TIL

def get_queryset(self):
    school_name = self.request.query_params.get('school_name')
    status = self.request.query_params.get('status')
        
    q = Q()

    if school_name:
        q &= Q(school_name__icontains = school_name)
    if status:
        q &= Q(status__icontains = status)

    queryset = School.objects.filter(q)
    return queryset

Q 객체

Django 에서 ORM을 사용할 때, 쿼리문의 OR 조건이나 다중 복합 조건문을 사용하고자 할 때 유용하다.

- SQL Query
select * from school where category='1학년' or sub_category='1반'

- Django ORM
School.objects.filter(Q(category='1학년') | Q(sub_category='1반'))

& => where 절의 AND 조건(교집합)
| => where 절의 OR 조건(합집합)

Q()

School.objects.all() 의 역할을 한다. 테이블 전체를 변수에 담아두고, q 안에 조건들을 추가하는 것이다.
q &= Q(sub_category__category__name=category) 는 'q'라는 변수안에 조건들을 넣어주고 마지막 .filter에 'q'를 넣어서 쿼리를 한번만 날리도록 해준다.

몸이 아프기도 했고 일요일에는 Docker를 연습하긴 했지만, 왠지 기업협업을 시작하기 전보다 느슨해진것 같아서 불안하다. 2주 밖에 안남았지만 다시금 정신차려서 DRF를 최대한 많이 배워야 하겠다.

Learn from that failure, gain humility and then we keep marching ourselves

실패로부터 배웠고, 겸손함을 얻었지. 그리고 우린 계속해서 앞으로 갈거야

[ 맥클모어 앤 라이언 루이스, "Can't Hold Us" ]

profile
자기계발 중인 신입 개발자
post-custom-banner

0개의 댓글