2023 pre-print 개발일지
07/23~07/25
media설정
pre-print 프로젝트에서 가능해야하는 기능 중 하나가 사용자가 제출한 파일을 출력해야 하기에..
이에 대한 파일을 저장하는 부분인 media와 경로를 설정해줘야했다.
다음과 같이 media와 files폴더를 생성해주고
settings.py 에서 미디어 경로 설정과
urls.py 에서 url패턴을 추가해준다.
이전에 OrderFile모델을 작성할 때
업로드 시 경로를 files/에 두었음으로 media하위의 files폴더에 파일이 저장되게 된다.
(미디어 경로 BASE_DIR을 'media'로 두었음으로 기본 경로는 media이다.)
프로젝트를 진행하는데 모델(DB) 설계에 문제를 발견했다.
=> 초반 ERD를 위의 사진과 같이 설계했었다.
단순히 User와 Order테이블을 원 투 매니의 관계로 두어 사용자가 주문을 했을 때
그 주문에 주문 전체 정보와 결제한 파일들을 다 저장하면 될 것이라 생각하고 진행하였는데
장고에는 다수의 파일을 한 필드에 저장할 수가 없다는 것을 프로젝트 진행 중 깨달았다...
DB수정
급하게 ERD를 수정하고 다음과 같이 모델을 수정하였다.
Order모델의 주문이 일어났을 경우 이 order_id를 OrderFile모델에 foreignkey로 두고 다량의 파일을 연속적으로
저장하는 방법을 택했다.
이와 같이 이용자가 파일을 저장하였을때
정상적으로 Order테이블에 주문행이 추가되고
그 주문행의 id에 따라 (주문행 2번 -> 3개의 파일을 올림)
=> 다음과 같이 해당 파일만큼 order_id를 참조하여 저장되는 것을 확인할 수 있다.
ERD 설계가 가장 중요하다.
프로젝트를 진행하다 모델을 수정하게 되니 코드를 모두 뒤집어 버렸는데 시간을 꽤나 낭비한 것 같다.
학교 전공에서 수강했던 DB설계및구현 강좌의 교수님이 항상 하시던 말씀이 프로젝트에서 데이터베이스를
설계하는데 오랜 시간을 들여야 한다며, 개발 전체 과정의 반 정도의 시간은 DB 설계와 구축에 힘을 써야한다고,,
제대로된 설계가 없으면 프로젝트 진행이 어렵다고 말씀 하셨는데.
오늘 그 말을 제대로 이해한 것 같다..
앞으로 프로젝트 진행 전 ERD 설계와 고찰에 시간을 많이 들여야겠다.
'Project > pre-print-project' 카테고리의 다른 글
Django pdf파일 페이지 계산하기(PyPDF2) & 마이페이지, 주문 상세 페이지 구현 (0) | 2023.08.05 |
---|---|
Django 장고 .gitignore 설정 & 민감한 정보 분리 & 깃허브 재개설 (0) | 2023.08.03 |
Django 장고 form사용 및 user모델 생성, 로그인+로그아웃 & 회원가입 기능 구현 (0) | 2023.08.02 |
Django 데이터베이스 생성 및 파일 세팅 (0) | 2023.07.23 |
[preprint] 프로젝트 설명 (0) | 2023.07.22 |