less than 1 minute read

model 생성하기

  • polls/models.py 경로에서 지정

model: 데이터베이스의 구조라고 생각하면 됨. (쉽게 말해서는 하나의 model이 데이터베이스의 하나의 테이블이고, 그 안에서 데이터형이나 다은 부가적인 것들을 지정) 이러한 하나의 테이블은 파이썬의 class로 표현이 됨.

import datetime

from django.db import models
from django.utils import timezone

# model: 데이터베이스의 구조라고 생각하면 됨
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text
    
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text
  • mysql 데이터베이스에서는 polls_question, polls_choice로 생성이 됨.

생성한 모델을 프로젝트에 포함시키기

모델을 만들었으면, 이 모델(크게 본다면 polls 앱)을 현재 프로젝트에 포함시켜야 한다. (장고의 앱은 꼇다뺏다가 가능하다.) 현재 프로젝트에 포함시키기 위해서는 앱의 구성 클래스에 대한 참조를 mysite/settings.py 내의 INSTALLED_APPS에 추가해야 한다. PollsConfig 클래스는 polls/apps.py파일에 존재하고, 이는 경로가 polls.apps.PollsConfig 로 표현된다. 이를 INSTALLED_APPS에 추가한다.

# polls/apps.py
from django.apps import AppConfig

class PollsConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'polls'
  • 위의 PollsConfig를 아래의 settings.py에 추가한다.
# settings.py
INSTALLED_APPS = [
    'polls.apps.PollsConfig',       # 추가 완료
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

뷰에서 탬플릿으로 연결


참고 링크

Django Part2