10월 26일 원티드 프리온보딩 백엔드 1일차 TIL
in Wantedpreonbording on Wantedpreonbording, Django, Git, Github
목차
1️⃣ 진행상황
- Payment 모델 구상 및 설계 완료
- 이후 API 설계
2️⃣ 진행상황리뷰
class Method(models.Model):
"""결제 수단에 대한 정보를 저장하는 테이블"""
class PaymentMethodChoices(models.TextChoices):
METHOD = ("신용카드", "무통장입금")
user = models.ForeignKey(User, on_delete=models.CASCADE) # 사용자
type_ = models.CharField(choices=PaymentMethodChoices.choices, verbose_name="type") # 결제수단
company = models.CharField(max_length=20) # 카드/은행사
number = models.CharField(max_length=20) # 카드/계좌번호
class Payment(CommonModel):
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
price = models.PositiveIntegerField(null=False)
delivery_fee = models.PositiveIntegerField(null=False)
amount = models.PositiveIntegerField(null=False)
payment_method = models.ForeignKey(Method, on_delete=models.SET_NULL, null=True)
delivery_address = models.TextField(null=True, blank=True)
successed_at = models.DateTimeField(null=True)
canceled_at = models.DateTimeField(null=True)
deliveried_at = models.DateTimeField(null=True)
- 사용자와 상품이 제거되면 결제내역도 삭제하려 했으나, 통산 등의 경우에 결제 내역은 남아 있는 것이 안전하다고 생각하여 null값으로만 지정하고 남겨두는 것으로 설계.
- 처음엔 가격과 배송비로만 계산하여 최종 결제 금액을 표출하려 했으나 추가 할인 등의 경우를 대비하여 따로 분리
- 결제수단을 문자열로 저장하려 했으나 사용자가 결제수단을 재사용하는 경우, 사용자가 탈퇴하여 개인정보를 지워야 하는 경우 등을 대비하여 Method 모델을 분리.
- 배송지도 비슷한 이유로 분리하려 했으나 시간 등의 이유로 차차 수정하기로.
- 결제 성공/결제 취소/배송 완료 정보는 여부만 저장하려 했으나 오류 발생 시 대처하기 위해서는 시각을 저장하는 것이 낫다고 생각하여 시각도 추가로 저장. 이후 null값을 허용하여 null일 시 여부를 거짓으로 판단하는 것으로 변경.
3️⃣ Today I Learned
django.db.models.TextChoices
한정된 선택지 안에서 선택 시에 사용하는 모델. 팀원 분의 코드를 리뷰하며 발견 후 Method 모델 생성 시 적용. Enumeration types
커밋 지우기
git reset < 커밋 코드 >
로 잘못된 커밋 삭제 후git push < 원격 저장소 > < 브랜치 > -f
로 강제 pushPR 리뷰 달기
Files Changed 탭에서 코드를 직접 보면서 줄 번호와 코드 사이에 커서를 올리면 나오는 파란 + 표시를 누르거나 드래그하여 원하는 부분에 코멘트 남기기 가능. 모든 코멘트를 남기고 우측 상단의 초록색 Finish your review 버튼을 눌러 submit. Comment는 단순 코멘트, Approve는 승인, Request changes는 수정 요청.
PR 리뷰 반영하기
PR이 merge 되기 전 merge 하려는 브랜치에 push 하면 바로 PR에 반영됨