Django

Django Model 생성하기[Django]

경상도상남자 2024. 9. 23. 02:15

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

 

생성 과정

 

1. Model 클래스 작성

  • 생성한 app의 models.py에 클래스 작성
  • 클래스는 관례적으로 앞글자를 대문자를 써서 구분
  • 필드명을 정의하고 "데이터 유형""제약 조건"을 정의
  • id 필드는 Django에서 자동으로 생성한다.
  • django.db.models 모듈의 Model이라는 부모 클래스를 상속 받는다.
  • Model은 model과 관련된 모든 코드가 작성되어 있는 클래스로 개발자는 가장 중요한 테이블 구조에 대한 코드만 작성하도록 하기 위한 것(상속을 활용한 프레임워크의 기능 제공)
# my_app/models.py

class My_App(models.Model):
	title = models.CharField(max_length=10)
    content = models.TextField()

 

https://docs.djangoproject.com/en/5.1/ref/models/fields/#field-options

 

Model field reference | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

2. Migrations

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

 

2.1 model class 기반으로 최종설계도(migration) 작성

$ python manage.py makemigration

 

2.2 최종 설계도를 DB에 전달하여 반영

$ python manage.py migrate

 

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

 

VsCode 에 경우 Database Client 확장 프로그램을 통해 Database를 연결해 확인할 수 있다.

 

1. 확장프로그램 설치

 

Database Client

 

2. 왼쪽에 생성된 아이콘을 클릭하고 Create Connection 클릭

3. SOLite 클릭 

4. Database Path에  db.sqlite3 파일경로 삽입

  • 이때 오른쪽 하단에 All Files로 변경해야 db.sqlite3 파일이 보인다

Database Client Path 삽입 후 연결 화면
db.sqlite3 파일 찾기

5. Connect 클릭 후 생성 확인

내가 생성한 테이블 확인

3. Automatic admin interface

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

데이터 확인 및 테스트 등을 진행하는데 매우 유용하다. 

 

3.1 admin 계정 생성

  • email은 선택사항이기 때문에 입력하지 않아도 된다
  • 비밀번호 입력시 보안상 터미널에 출력되지 않아 무시하고 입력하면 된다. 
$ python manage.py createsuperuser

 

3.2 admin에 모델 클래스 등록

  • admin.py에 작성한 모델 클래스를 등록해야만 admin site에서 확인 할 수 있다. 
# my_app/admin.py

from django.contrib import admin
from .models import My_App

admin.site.register(My_App)

 

4. 데이터 베이스 초기화

 

1. migration 파일 삭제

2. db.sqlite3 파일 삭제

__init__.py 와 migrations 폴더는 지우면 안된다. 

'Django' 카테고리의 다른 글

Django Form [Django]  (0) 2024.09.25
Django ORM with view [Django]  (0) 2024.09.24
Django ORM [Django]  (3) 2024.09.23
Django 프로젝트 생성하기 [Django]  (1) 2024.09.18
django 란 무엇인가? [django]  (0) 2024.09.17