♥️ 오늘 기억해야 할 것들!
- 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값이고, 택시회사면 리스트로도 값을 지정해줘야함.
- 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를 활용해 소팅하면 훨씬 간편하고 쉽게 처리할 수 있다.
- 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 이라고 써주면 수월하게 다른 테이블을 참조해서 원하는 자료값을 가져올 수 있다!
- 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
제발..... 까먹지 말아줘.......😳