Django 투표 생성 // Django 튜토리얼 (2)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Django 투표 생성 // Django 튜토리얼 (2)
앞서 만들던 투표 만들기를 이어서 해보자.
먼저, DB 설치를 하자.
$ python manage.py migrate
OK 문구들이 많이 나오면서 설치가 완료 된다.
다음은 모델을 만들 차례이다.
polls/models.py 파일에 아래 코드를 입력한다.
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
Django의 모델은 models.Model을 상속받아서 만들어지게 된다.
CharField는 문자열, DateTimeField는 날짜와 시간에 대한 데이터 값을 저장하는 변수이다.
ForeignKey는 다른 모델과의 관계를 생성하기 위해 사용하며, 위 코드에서는 Choice 클래스가 Question 클래스에 소속된다는 것을 의미한다.
모델을 만들었으니 이제 DB에 적용을 할 차례이다. migrate 명령어를 통하여 적용을 하기 위해서는 polls 어플이 현재 프로젝트에 있다는 설정을 해야 하므로 config/settings.py 파일을 수정해준다.
수정이 완료되면 migrate 명령어를 통하여 DB에 적용을 한다.
$ python manage.py makemigrations polls
아래 명령어를 입력하면 어떤 SQL이 실행될지 확인할 수 있다.
$ python manage.py sqlmigrate polls 0001
마지막으로 변경사항을 DB에 반영하면 된다.
$ python manage.py migrate polls 0001
모델에 함수 추가하기
Question 모델과 Choice 모델에 __str__ method를 추가하자. 이 method는 객체를 출력할 때 나올 내용을 결정한다.
기존 polls/models.py를 다음과 같이 수정한다.
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text 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
또, was_published_recently method도 추가하자.
import datetime from django.db import models from django.utils import timezone 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
모델 생성이 완료되었으니 확인을 해보자. 관리자 계정을 생성한다.
$ python manage.py createsuperuser
그리고 polls/admin.py에서 Question Model을 관리하기 위해 다음 코드를 입력한다.
from django.contrib import admin from .models import Question admin.site.register(Question)
서버를 실행하고 관리자 페이지를 확인해보자. 다음과 같이 POLLS/Question이 생성되었을 것이다.
Question의 Add 버튼을 눌러 투표를 등록해보자.
제목을 입력하고 Today와 Now를 눌러 날짜와 시간을 입력한 뒤 SAVE 버튼을 눌러 저장한다.
from http://sorious77.tistory.com/65 by ccl(A) rewrite - 2020-03-06 03:20:24
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기