반응형
+----+------------------+
| id | name |
+----+------------------+
| 1 | An upcoming trip |
| 2 | Last trip |
| 3 | Canceled trip |
+----+------------------+
예약상태 데이터베이스는 이렇게 들어가있고 예약을 하면 예약상태를 1번 예정된 여행으로 지정을 해야 한다.
booking = Booking.objects.create(
...
booking_status = BookingStatus.objects.get(id = 1),
...
)
그래서 이렇게 작성을 했는데 id=1을 해버리면 데이터에 뭐가 들어있는지 아는 사람만 알아볼 수 있는 코드가 된다.
그래서 id=1 이 An upcoming trip이라는 것을 알려주기 위해 Enum을 사용했다.
Enum 사용하기
Enum은 상수와 이름을 연결할 때 사용할 수 있다.
사용하기 위해 import를 하고
booking_statuses의 id와 name을 연결해서 사용하기 위해서 정의를 했다.
from enum import Enum
class BookingStatusEnum(Enum):
UPCOMING = 1
LAST = 2
CANCELED = 3
id값을 지정할 때 앞의 이름을 사용하면서 실제 값은 숫자로 넣어야 하는데
<Enum클래스명>.<항목이름>.<value>를 사용하면 된다.
booking = Booking.objects.create(
...
booking_status = BookingStatus.objects.get(id = BookingStatusEnum.UPCOMING.value),
...
)
이렇게 작성하면 id=1과 똑같이 작동하면서
booking status 1번이 어떤 데이터인지 모르는 사람도 알아볼 수 있는 코드가 되었다!
참고
반응형
'wecode' 카테고리의 다른 글
마이허니트립 | 예약 api transaction.atomic() 적용 (0) | 2022.08.17 |
---|---|
마이허니트립 | 예약페이지 승객정보 bulk_create (0) | 2022.08.14 |
마이허니트립 | 카카오 로그인 api : 카카오 인가코드로 토큰발급받기 (0) | 2022.08.05 |
마이허니트립 | 카카오 로그인 api : 카카오 토큰으로 유저정보 받아서 회원가입, 로그인 시키기 (0) | 2022.08.04 |
마이허니트립 | 데이터베이스 모델링 (0) | 2022.08.04 |