CEOS 3주차 - Django ORM 활용하기

diveintoo·2022년 5월 1일
0

CEOS

목록 보기
3/6

CEOS 15th 백엔드 3주차 과제 공부기록

Django ORM 활용하기

⚒️ refactoring: 중복되는 필드인 생성 시간, 수정 시간을 timestamp 추상 클래스로 만들어서 상속관계로 구현

데이터베이스

ERD
  • profile

    • 인스타그램 프로필
    • name, 상태 메세지
    • user와 일대일 관계
  • user

    • 사용자 모델
    • 장고의 기본 User 모델 사용
  • timestamp

    • 생성 시간, 수정 시간을 가지는 추상 클래스
  • comment

    • 게시글에 달리는 댓글 모델
    • 댓글은 게시글에 여러 개 달릴 수 있으므로, 일대다 관계
    • 댓글은 사용자와 일대다 관계
    • 댓글 내용, 생성시간, 수정시간(timestamp를 상속)
  • post

    • 게시글 모델
    • 게시글은 한 유저가 여러 개 작성할 수 있으므로, 일대다 관계
    • 게시글 내용, 생성시간, 수정시간(timestamp를 상속), 좋아요 개수
  • like

    • 좋아요 모델
    • 좋아요는 유저와 일대다 관계
    • 좋아요는 게시글이 여러 개 가질 수 있으므로 일대다 관계
  • file

    • 게시글에 포함되는 사진이나 동영상 모델
    • 게시글은 여러 사진이나 동영상을 포함할 수 있으므로 일대다 관계
    • 파일의 이름, url path

👉 DATETIME과 TIMESTAMP의 차이

생성시간과 수정시간을 작성하다가 DATETIME과 TIMESTAMP 둘 중 어떤 타입을 써야할지 고민했습니다.

둘의 차이를 찾아보니 DATETIME은 입력된 날짜와 시간 그대로 데이터를 저장하지만, TIMESTAMP는 time_zone 시스템 변수로 값을 지정한다고 합니다.

TIMESTAMP는 데이터 입출력시 time_zone 시스템 변수 값을 체크해 그 기반으로 변환하여 처리하기 때문에 time_zone이 바뀌면 모든 데이터가 그 시간대에 맞게 바뀝니다.

따라서 해외에 나가는 사이트라면 TIMESTAMP를 고려해야할 것 같습니다.

저는 이번 인스타그램 프로젝트는 한국에서만 사용하는 것으로 판단하고 DATETIME으로 지정하였습니다.

ORM 적용

객체 생성

ORM_객체생성

객체 조회

ORM_객체조회

filter 사용

ORM_filter1 ORM_filter2

0개의 댓글