inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

mall 앱 Category/Post 모델 추가 및 마이그레이션 등록

product model에서 category는 FK로 주셨는데, status는 왜 chocies로 주신 이유?

95

inspireworld

작성한 질문수 6

0

category는 동적으로 추가할 가능성이 있지만,

status는 상태가 추가될 가능성이 드물기 때문에 이렇게 모델 설계를 하신게 맞을까요?

python django

답변 2

0

이진석

안녕하세요.

추측하신 내용이 맞습니다.

  • status 필드는 정상, 품절, 단종, 비활성화와 같이 미리 정의된 값들을 가지며, 이러한 값들은 시간이 지나도 변경될 가능성이 매우 낮습니다. 비즈니스 로직에서 각 목록을 직접 참조해야하는 경우가 많아, 외래키 방식에 비해 코드의 가독성과 유지보수성을 높일 수 있습니다.

  • choices는 별도의 테이블없이 모델 정의 내에서 목록을 관리할 수 있어 구조가 단순해지며, 데이터베이스 조인없이 필드의 값을 바로 사용할 수 있어 조회 성능이 더 좋습니다.

  • 개발자가 코드 상에서 직접 값을 참조할 수 있어 코드의 의도가 더 명확해집니다. ex) Product.objects.filter(status=Product.Status.ACTIVE)

  • 그리고, 지정된 값만 사용할 수 있어 데이터 일관성을 보장받을 수 있습니다.

  • 목록 변경이 필요할 경우, 별도의 데이터베이스 수정없이 모델 정의만 수정하면 되므로 마이그레이션이 간단합니다.

어떤 시스템에서는 "공통코드"라는 이름으로 이러한 선택지들을 모두 데이터베이스에 넣어두는 데요. 저는 공통코드 테이블보다 // 이러한 이유로, 변경 가능성이 낮고 직접 참조가 필요한 필드는 외래키보다 choices를 사용하는 것이 더 좋다고 생각하며, 추천드립니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. inspireworld님.
비슷한 주제를 다룬 질문과 답변을 찾을 수 있었습니다. Django 모델 설계 시 ForeignKey와 TextChoices를 사용하는 이유와 차이가 설명된 내용을 소개드리니 참조해보세요.

  1. 모델 설계, 데이터 저장 - 데이터 정규화에 대한 토론과 다양한 필드 유형 선택의 중요성을 다룬 게시물입니다.
    이 답변에서는 Django 모델과 폼의 장점과 단점을 어떻게 활용할 수 있는지에 대해 설명하고 있습니다. 특히 유사한 상황에서 텍스트 기반 필드와 ForeignKey를 사용하는 이유에 대해 논의하고 있습니다.

  2. 외래키 설정을 다르게 하는 경우 - ForeignKey를 어디에 설정하는지와 어떤 이유로 그렇게 설정하는지에 대한 예제와 설명이 포함된 게시물입니다.
    이 답변에서는 외래 키 설정이 모델 관계에서 어떻게 중요한 역할을 하는지와 다양한 설정 방법에 대해 설명하고, 텍스트 기반 필드와의 비교 설명도 일부 제공하고 있습니다.

  3. 옵션 설계에 관해서 - 특정 상황에서 다형성, 외래 키 및 다양한 필드 선택에 대해 상세히 논의한 게시물입니다. 주제와 직접적으로 연결되지는 않지만, 데이터베이스 모델링에 대한 고려 사항을 폭넓게 다루고 있습니다.
    이 예제는 다양한 모델링 방식과 그 결정의 Trade-off를 이해하는 데 유용합니다.

이 답변들이 도움되기를 바라며, 추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

(질문)KG이니시스 팝업차단 문제 발생(강의 13. 자바스크립트만으로 포트원 결제 구현하기, 7분18초)

1

157

2

로그아웃 405 에러

0

172

1

웹훅 사용과 관련하여 질문 드립니다.

0

243

2

cancel에 대해 질문을 드립니다.

0

146

2

m_redirect_url에 대해 문의 드립니다.

0

151

1

cancle에 대해 문의 드립니다.

0

295

3

db_constraint=False 에 대해 질문 드립니다.

0

169

2

pip 설치시 에러가 발생합니다.

0

499

2

주문 로직

0

369

3

결제 기능을 비동기적으로 처리할 필요는 없나요..?

0

411

3

배포환경과 개발환경 패키지 관리, 도커환경 디버깅 팁이 있을까요?

0

287

4

8강 주문 모델 설계에서 따로 ManyToMany 관계를 위한 모델을 선언해준 이유?

0

136

2

선생님 from iamport import Iamport 에서 에러가 생깁니다.

0

152

2

db_index=True로 설정하는 이유

0

141

2

안녕하세요 파이참 폼링크 제출했습니다

0

106

1

포트원 UI가 바뀌면서 포트원 404에러가 발생합니다.

0

591

5

djlint 편집시 무한 동작

0

129

1

결제 실패

0

230

1

환불을 구현 하려면 어떤식으로 해야 되나여?

0

498

1

next js 에서 결제 구현할때 에러 발생하는데 디버깅 팁 주실수 있나요?

0

313

1

사용자가 진행을 중단하였습니다.

0

345

3

결제창 출력이 되지 않습니다.

0

858

2

결제 중간 이탈

0

326

2

포트원 결제 payment_detail 이전 과정 문제

0

493

4