#21 Django - 예약가능 기간 검색

박종규·2021년 8월 22일
0

TIL

목록 보기
22/22

에어비앤비 클론 코딩 중,
원하는 기간에 예약이 가능한 숙소를 검색하는 기능을 구현하려고한다.

로직은 아래와 같다.

  1. 유저가 원하는 체크인 날짜가 숙소의 예약 기간에 있는지 확인하고 제외한다.
    (숙소 체크아웃 날짜에는 체크인이 가능하다! - D숙소 case)
  2. 예약된 숙소의 체크인 날짜가 유저가 원하는 예약 기간 사이에 있는지 확인하고 제외한다.
    (1번과 같이 유저가 원하는 체크아웃 날짜는 예약된 숙소 체크인과 동일해도 된다. - C숙소 case)

위와 같은 예시에서 로직을 통과할 경우, 예약가능한 숙소는
C,D,F 숙소가 검색될 것이다.

구현해보기 위한 filter/ exclude 옵션을 알아보자.

  1. gt: 초과 / lt: 미만 / gte: 이상 / lte:이하
  2. range: [x,y] x,y 사이에 있는 값을 호출

코드

new_checkout = datetime.strptime(checkout, "%Y-%m-%d").date() - timedelta(1)
            
     date_filtered_products = address_filtered_products.exclude(
                (Q(booking__check_out__gt = checkin) & Q(booking__check_in__lte = checkin)) |
                Q(booking__check_in__range = [checkin, new_checkout])
            )

추가로 주소 검색, 예약 인원 제한의 옵션을 추가할 예정이다.

1개의 댓글

comment-user-thumbnail
2021년 8월 22일

👍

답글 달기