Web, Django, DB

Django : Model

Disciple428 2024. 3. 20. 02:40
  • Django Model

DB의 테이블을 정의하고 데이터를 조작할 수 있는 기능들을 제공한다.

테이블 구조를 설계하는 ‘청사진’

DB ⇒ 테이블들의 집합 , 이런 테이블들을 Model에서 설계한다!

 

  • 테이블을 설계할 때 고려할 사항
  1. 필드(열) 이름
  2. 필드 데이터 타입
  3. (필드 옵션) 필드의 제약 조건

 

  • 제약 조건

데이터가 올바르게 저장되고 관리되도록 하기 위한 규칙

ex) 숫자만 저장, 문자는 100자까지만 저장 등

 

  • Migrations

model 클래스의 변경 사항 (필드 생성, 수정, 삭제 등)을 DB에 최종 반영하는 방법

 

  • Migrations 핵심 명령어 2가지
  1. python manage.py makemigrations : model class를 기반으로 최종 설계도(migration) 작성
  2. python manage.py migrate : 최종 설계도를 DB에 전달하여 반영

단, 이미 생성된 테이블에 필드를 추가할 경우에는 기존 테이블이 존재하기 때문에 기본값 설정을 통해 테이블에 값을 채워야 필드 추가가 가능하다.

model class에 변경 사항이 생겼다면 반드시 새로운 설계도를 생성하고, 이를 DB에 반영해야 한다.

(model class → makemigrations → migrate)

 

  • Model Field

DB 테이블의 필드(열)를 정의하며, 해당 필드에 저장되는 데이터 타입과 제약조건을 정의한다.

<예시>

CharField() : 길이의 제한이 있는 문자열을 넣을 때 사용한다. 필드의 최대 길이를 결정하는 ‘max_length’ 를 필수 인자로 갖는다.

TextField() : 길이 제한이 없는 문자열을 넣을 때, 글자의 수가 많을 때 사용한다.

DateTimeField() : 날짜와 시간을 넣을 때 사용한다. 2가지 선택 인자를 갖는다.

  1. auto_now : 데이터가 저장될 때마다 자동으로 현재 날짜시간을 저장
  2. auto_now_add : 데이터가 처음 생성될 때만 자동으로 현재 날짜시간을 저장

 

  • Automatic admin interface

Django는 추가 설치 및 설정 없이 자동으로 관리자 인터페이스를 제공한다.

‘python manage.py createsuperuser’ 를 통해 admin 계정을 생성해야 한다.

또한 admin.py 에서 작성된 모델 클래스를 등록해야 admin site에서 확인 가능하다.

→ admin.site.register(’클래스 이름’)

 

  • 첫 migrate 시 출력 내용이 많은데, 이는 Django 프로젝트가 동작하기 위해 미리 작성되어있는 기본 내장 app들에 대한 migration 파일들이 함께 migrate 되기 때문이다.

 

  • SQLite

데이터베이스 관리 시스템 중 하나, Django의 기본 데이터베이스로 사용된다.

 

  • CRUD

소프트웨어가 가지는 기본적인 데이터 처리 기능

= Create (저장) , Read (조회) , Update (갱신) , Delete (삭제)