10월 26일 원티드 프리온보딩 백엔드 1일차 TIL

django.db.models.TextChoices, 커밋 지우기, PR 리뷰 달기, PR 리뷰 반영하기

목차

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 로 강제 push

  • PR 리뷰 달기

    Files Changed 탭에서 코드를 직접 보면서 줄 번호와 코드 사이에 커서를 올리면 나오는 파란 + 표시를 누르거나 드래그하여 원하는 부분에 코멘트 남기기 가능. 모든 코멘트를 남기고 우측 상단의 초록색 Finish your review 버튼을 눌러 submit. Comment는 단순 코멘트, Approve는 승인, Request changes는 수정 요청.

  • PR 리뷰 반영하기

    PR이 merge 되기 전 merge 하려는 브랜치에 push 하면 바로 PR에 반영됨


© 2021. All rights reserved.

Powered by Hydejack v7.5.2