본문 바로가기

Python/Django

Django 예제 / Writing your first Django app, part 2 / Models and the admin site

Django 공식 문서 v3.0 Tutorial

https://docs.djangoproject.com/en/3.0/intro/tutorial02/

 

Writing your first Django app, part 2 | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

https://github.com/JisunParkRea/django-tutorial-mypractice

 

JisunParkRea/django-tutorial-mypractice

This is django-tutorial practice code referencing django official documentation. - JisunParkRea/django-tutorial-mypractice

github.com

 

 

Database 세팅

이번 예제는 python에 내장되어있는 sqlite를 사용하기 때문에 따로 세팅이 필요 없음

 

Database에 tables를 만들어보자

python manage.py migrate

 

Models 만들기

데이터 모델을 한곳에 정의하고 이를 쉽게 사용하기 위해 쓰는 것

즉, 데이터베이스를 편리하게 사용하기 위한 목적

 

여기 예제에선 2개의 model를 만든다.

- Question: question & publication date

- Choice: text of the choice & a vote tally

그리고 각 Choice는 Question과 관련되어 있다.

 

polls/models.py에 다음 코드를 붙여넣자

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

 

Models 활성화

그 전에 project에게 app이 설치되었다는 것을 알려줘야함.

 

mysite/settings.py에서 INSTALLED_APPS에 app이름인 polls 추가

그리곤 makemigrations 명령어를 통해 Django에게 model에 변화가 있다는 것을 알려주는 것

python manage.py makemigrations polls

결과:

migrate 명령어를 통해 Database에 model table들을 만들 수 있음 (동기화)

python manage.py migrate

결과:

 

# 다음 명령을 통해 생성된 sql문을 확인할 수 있음

python manage.py sqlmigrate polls 0001

결과:

 

Admin user 만들기

python manage.py createsuperuser

 

서버 시작 후 Admin 페이지 접속

python manage.py runserver

http://127.0.0.1:8000/admin/

 

Admin에서 poll app 수정 가능하게 만들기

poll app을 admin index page에 display하자

이를 위해선 admin에게 Question object가 admin interface를 가지고 있다는 것을 알려줘야 한다.

polls/admin.py에 다음 코드를 붙여넣자.

from django.contrib import admin

from .models import Question

admin.site.register(Question)

결과:

여기서 원하는대로 수정/삭제 할 수 있음