[Django/Python] 3. 모델 생성하기

SangHyun-Park·2021년 6월 30일
0

Django

목록 보기
4/12

#필자의 Django 입문부터 첫 웹페이지 배포하기까지, 코드 리뷰를 위한 글입니다

#필자 또한 입문자이며, 두번째 Django 프로젝트를 마친 후, 입문자의 시점으로 코드 리뷰를 하는 것 이며, 코드를 작성하며 이해하고,느낀 부분을 위주로 작성할 예정 입니다

모델 생성하기

study/models.py

로 들어가서 모델을 생성하겠습니다

저희는 스터디에 등록할 회원의 회원가입, 스터디 신청, 조회, 요일 변경을 구체화 할 계획으로 study application 을 생성하였습니다

따라서, 해당 application 에서 다룰 객체들을 생각해보면
User(id/password) , Student(이름/방문날짜/스터디종류) 으로 우선 간단하게 생각할 수 있습니다

(User - Student 는 1:1 의존관계가 있어야한다는 것도 생각해봅시다)

User객체 같은 경우에는 Django 에서 기본적으로 주어지는 객체를 사용할 것이며, Student 객체 같은 경우에는 직접 models.py 안에서 생성을 해 주어야 합니다

models.py

우선 위와같이 간단하게 Student 모델을 작성합니다

model class 들은 장고 내부에서 정의 된
django.db.models.Model 클래스를 상속받으며
Django 에서 해당 클래스를 모델로 취급하게 됩니다

모델 내부의 models.~~Field 객체 인스턴스는 field 라고 하며
위에서는 name / level / first_date 가 각각 field 가 됩니다

Field 앞에 오는 단어에 따라서 해당 field 에 저장할 데이터의 데이터 타입이 결정됩니다

name

CharField 로 선언, 저장할 데이터는 크기가 명시 된 문자열 이며, 그 크기는 파라미터 max_length 로 설정할 수 있습니다 (필수)

level

name 과 같은 CharField

파라미터 choices 로 입력받을 값을 내부에서 정해주기로 했음 ( 레벨은 정해져 있기 때문 )

choices 의 값으로는 2중 튜플이 들어가며 튜플 내부 값으로는
('db에 저장될 값', ('외부에 보여질 값') 의 조합이라고 생각하시면 됩니다

first_date

DateField 로 선언, 저장할 데이터는 시간 정보가 없는 날짜 이며
파라미터 default 로 값이 아무것도 안 들어갔을 때 당일 날짜로 설정이 되도록 설계를해줍니다(datefield 의 non-nullable 속성때문에 datefield는 꼭 값이 있어야합니다)

데이터베이스에 모델 저장하기

모델을 만들고 데이터베이스에 저장을 하지않으면 메모리에 올라간 데이터들만 사용하는셈이 되기 때문에 우리가 저장한 정보가 날아가는 일이 발생합니다.

따라서 장고에서 기본적으로 제공하는 sqlite3 데이터베이스에 우리의 모델 정보를 테이블화 시켜서 저장하도록 합니다

~ (virt) py -3 manage.py makemigrations study
~ (virt) py -3 manage.py migrate

위의 명령어를 실행하면

migrate 가 실행되는것을 알 수 있습니다

한가지 흥미로운 점은, 우리가 작성한 study 외에도 auth, admin, sessions 이 migrate 되는 것을 볼 수 있는데, 이는 Django 에서 기본적으로 설치되어있는 application 임을 알 수 있습니다

다음 글에서는 장고에서 제공하는 강력한 admin 페이지에 대해서 알아보도록 하겠습니다

profile
https://ppaksang.tistory.com/ 옮겼습니다 !!

0개의 댓글