Python/Django

[Django-Memo] 4. App 및 Model 생성

꼰대 2021. 5. 29. 17:42

처음 계획 시 App에 대한 설계는

로그인/로그아웃 : auth

회원가입 : signup

메모관리 : memo

3가지로 생각했는데 강좌를 읽어보니 django에서 auth라는 App 이름으로 로그인/로그아웃, 회원정보에 대한 관리를 기본적으로 제공한다고 합니다.

그러면 auth, signup은 따로 만들필요 없고 memo만 생성하면 될 거 같습니다.

 

1. Model 설계

메모 페이지에서 보여줄 내용은 메모 내용, 생성 시간이며 삭제 기능이 있습니다.

삭제는 실제 삭제하지 않고 flag를 두어 보여줄지 말지 하겠습니다.

No 필드명 타입 내용
1 content varchar(100) 메모 내용
2 is_del tinyint(1) 삭제 여부 (기본값 0)
3 created_date datetime(6) 등록일자
4 updated_date datetime(6) 수정일자

 

 

2. memo App 생성

쉘에 django-admin startapp memo라고 입력하고 실행하면 아래 그림과 같이 memo app이 생성됩니다.

 

다음으로 memo/apps.py을 열어 자동으로 생성된 class 이름을 확인합니다. (MemoConfig)

 

다음으로 app을 등록합니다. config/settings.py을 열어 위의 class 이름으로 아래와 같이

memo.apps.MemoConfig를 입력합니다.

 

 

3. model 생성

memo/models.py를 열고 아래와 같이 입력 합니다.

 

  - 메모 내용은 한줄만 입력 받고 보여주는 형태이므로 짧게 잡았습니다.

  - 삭제 여부의 기본값은 False이며 화면에서 삭제 아이콘을 누르면 해당 값을 True로 업데이트하고 메모 수정일도 현재시간으로 등록합니다.

  - 메모 리스트 출력 시 삭제 여부가 False인 것만 보여줍니다.

  - 시간값은 datetime(6)으로 정의했는데 이는 django를 통해 자동으로 생성된 테이블을 보니 날짜 필드가 datetime(6)으로 등록되어 있어 일관성 유지를 위해 하였습니다.

  - 메모 수정일은 처음 등록 시 필요 없으므로 Null 조건을 주었습니다.

 

 

4. 테이블 생성 (migration)

쉘에 "python manage.py makemigrations"를 입력한 후 실행합니다.

 

다음으로 "python manage.py migrate"를 입력하여 실제 테이블을 생성합니다.

 

실제 테이블을 보면 아래와 같이 잘 생성되었습니다.

 

  - 테이블명은 "App명_Model명"으로 자동 생성됩니다.

  - Key값인 id 필드도 자동 생성되었으며 자동 증가 값입니다.

  - Model  생성 시 is_del 값에 "default=False"값을 주었는데 데이터베이스에서는 반영이 안됐습니다. Model에서 자동 관리하는 것인지, 아니면 옵션 값이 잘못된건지는 실제 Model을 이용해서 데이터 입력 시 확인하겠습니다.

반응형