Wa:tta Taxi (3)

On a regular basis·2021년 6월 2일
0

Wa:tta Taxi

목록 보기
3/4
post-thumbnail

♥️ 오늘 기억해야 할 것들!

  1. none값 줄 때,
departure_time                   = request.GET.get('departure_time', '1900-01-01 23:59')
        price                    = request.GET.get('price', 60000)
        taxi_company             = request.GET.getlist('taxi_company', ['Dasul Taxi', 'Taxi Choi-gging', 'Art Transportation', 'Lama 운수', 'DaMo taxi', 'Muy bien Trans'])
        sort                     = request.GET.get('sort', None)

query parameter로 값 받는 것에서, 그 값으로 들어오면 ok, 근데 그렇게 안들어오면 None, 그게 아니라면 값을 저렇게 지정해줘야함. 가격이면 6000이 default값이고, 택시회사면 리스트로도 값을 지정해줘야함.

  1. sort
sort_list = {
            'dep_time_late' : 'course__departure_time',
            'dep_time'      : '-course__departure_time',
            'price'         : '-price',
             None           : '-price'
        }
        sort           = None if sort not in sort_list else sort
        sort_string    = sort_list[sort]
schedules = Schedule.objects.filter(
              Q(date=departure_date) 
            & Q(seat_type__name=seat_type) 
            & Q(course_id__in=[course.id for course in courses]) 
            & Q(seat_remain__gte = seat_remain)
            & Q(price__lte=price)
            & Q(course__taxi_company__name__in = taxi_company)
            & Q(course__departure_time__lte = departure_time)).order_by(sort_string)[0:300]

sort할 때, sort list를 만들어서 sort 값을 넣어주고, 값 입력을 안했을 때는 default값으로 -price가 들어가도록 지정해준다. sort_string이라는 변수 안에 sort_list[sort]를 넣어주고 그 값을 order_by를 활용해 소팅하면 훨씬 간편하고 쉽게 처리할 수 있다.

  1. Q
schedules = Schedule.objects.filter(
              Q(date=departure_date) 
            & Q(seat_type__name=seat_type) 
            & Q(course_id__in=[course.id for course in courses]) 
            & Q(seat_remain__gte = seat_remain)
            & Q(price__lte=price)
            & Q(course__taxi_company__name__in = taxi_company)
            & Q(course__departure_time__lte = departure_time)).order_by(sort_string)[0:300]

여기 있는 Q는 필수구현사항으로 들어가는 조건들을 걸어줄 때 사용한다. &로 이어져있다. filter로 걸어줄 때, 기본이 schedule 테이블을 참조하는데, course에 있는 taxi_company 컬럼의 name을 가져오고 싶을 때, 언더바(lookup함수)를 활용해서 course__taxi_company_name 이라고 써주면 수월하게 다른 테이블을 참조해서 원하는 자료값을 가져올 수 있다!

  1. git push하기 전에...
    git add .
    git commit
    git checkout main
    git pull origin main
    git checkout feature/search(브랜치)
    git rebase -i main
    git push origin feature/search
    제발..... 까먹지 말아줘.......😳
profile
개발 기록

0개의 댓글