이전에 공부하던 부분부터 이어서 플레이할 수 있습니다.
이어서 보기 처음부터 보기

models.py에는 모델 클래스를 여러 개 정의할 수 있고, 모델 간의 관계를 나타낼 수 있습니다.

1. 새로운 모델을 models.py에 정의합니다.

# C:\Code\mysite\elections\models.py

# 기존 코드 유지

class Poll(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    area = models.CharField(max_length = 15)

class Choice(models.Model):
    poll = models.ForeignKey(Poll) #Poll 모델의 id를 이용
    candidate = models.ForeignKey(Candidate)
    votes = models.IntegerField(default = 0)

2. admin에서 Poll 모델을 사용하기 위해, admin.py에 Poll을 등록(regist)합니다.

# C:\Code\mysite\elections\admin.py

from django.contrib import admin
from .models import Candidate, Poll


admin.site.register(Candidate)
admin.site.register(Poll)

3. 모델 등록

migration 파일을 만든 후 - migration 파일을 DB에 반영 - runserver 과정을 밟습니다.

powershell 등에서 manage.py가 있는 디렉토리로 이동 후,

  1. python manage.py makemigrations
  2. python manage.py migrate
  3. python manage.py runserver

브라우저에서 localhost:8000/admin으로 접속하면 Poll을 등록할 수 있습니다.


영상에서 쓰인 필드 클래스를 간략히 설명하면,

DateTimeField

date(날짜)와 time(시간)을 나타내며, python의 datetime.datetime 인스턴스로 표현됩니다.

CharField

string을 나타내며, 필수 인자 max_length가 있습니다.
길이가 긴 문자열을 저장하려면 TextField 등을 쓰세요.

  • CharField.max_length : 해당 필드의 최대길이를 설정합니다. 예를 들어 5로 설정하면 5글자 이하로만 저장할 수 있습니다.

IntegerField

정수를 나타냅니다.
이 필드는 Django가 지원하는 모든 데이터 베이스에서 -2147483648에서 2147483647까지의 정수를 안전하게 저장합니다.
더 큰 정수는 BigIntegerField 등을 이용하세요.

ForeignKey

한 모델에서 다른 모델을 이용할 때에 씁니다(보통 many-to-one 관계 모델에서 이용합니다).

영상에서도 여론조사(Poll) id 하나에 여러 개의 [후보-득표수]를 저장합니다.