- 카테고리별 게시판에서 게시글을 작성, 조회할 수 있음
- 게시글에 댓글 및 대댓글을 작성할 수 있음
- 유저별로 학기에 맞는 시간표를 작성할 수 있고 강의에 리뷰를 남길 수 있음
- 한 명의 유저가 지금까지 수강한 모든 강의들을 조회할 수 있음
- 동일한 과목도 분반별로 강의목록에 추가할 수 있음
- 유저간 친구 맺기를 통해 서로의 시간표를 조회할 수 있음
- 유저: User
- 커뮤니티: Board, Post, Comment, Reply
- 시간표: Timetable, Course, CourseInfo,Friend_list, Review
user 와 course 를 ForeignKey로 연결하여 timetable 객체 4개 생성
Timetable.objects.all()
로 만들어진 Timetable 객체들을 조회
Timetable.objects.filter(user__username=”ImTakGyun”)
로 유저의 timetable을 조회
- 이미 생성된 기본 User Model 삭제하기
- 생성되어 있는 회원과 관련된 앱의 migrations폴더에서 __pycache__폴더와 init.py를 제외하고 다 지워주기
- DB에서 살려야할 데이터를 백업해 주신 다음 과감하게 DROP
- 백업한 데이터를 새 DB에 넣어주기
- (현재 상황에서는 데이터를 넣기 전이라서 백업은 진행하지 않았다. 나중에 추가로 공부할 예정!)
- models.ForeignKey(User, related_name='##')
- 충돌하는 두 키를 related_name 을 통해 각각 명시함으로써 해결
-> Reverse accessor for 'api.User.user_permissions' clashes with reverse accessor for 'auth.User..user_permissions'
- setting.py 에 AUTH_USER_MODEL = 'api.User' 를 명시함으로써 해결
- 에브리타임 기능을 구현하기 위해 ERD 설계에 많은 시간을 쏟았다.
- 커뮤니티의 경우 이전에 고민한 적이 있어서 고민이 없었지만, 의외의 복병은 시간표였다.
- 같은 강좌도 분반마다 Course 테이블에 추가하면 되겠거니 생각했었는데 그렇게 되면 강의평이 분반마다 생성되기에
- Course_Info 테이블을 추가로 생성함으로써 같은 강좌의 강의평은 한번에 조회가 가능하도록 조회했다.
- 또 요일마다 다른 강의실을 쓰는 강의의 경우 요일과 교시 그리고 강의실 3가지를 고려해야했는데
- 요일/교시 테이블과 강의실 테이블 그리고 강의정보를 조합하며 하나의 강의를 만들게 되면 조회시에 join 연산도 많아질 뿐만 아니라
- 하나의 강의 정보를 조회할 때 여러개의 레코드를 프론트에 반환해주며 프론트에서 이를 통합해서 나타내야하기에 번거롭다는 생각이 들었다.