ev 프로젝트 (2) - blog 모델 만들기
이 내용은 파이썬 웹프로그래밍 책의 내용을 참고하였습니다.
뼈대 만들기
저번 글에서 blog app을 만들어 두었으므로, 만들어진 blog를 ev의 settings.py
에 등록해야합니다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig', # ev blog를 위해 추가됨.
]
model 작성
우선은 블로그 기능의 기본이라고 할 수 있는 글 쓰기 기능에 대해 만들어 보겠습니다. 이를 위해 db에 저장할 모델이 필요한데 이 모델을 blog의 models.py
에 작성해줍니다.
from django.db import models
from django.core.urlresolvers import resolve
# Create your models here.
class Post(models.Model):
title = models.CharField('TITLE', max_lenght=50)
slug = models.SlugField('SLUG', unique=True, allow_unicode=True, help_text='one word for title alias')
description = models.CharField('DESCRIPTION', max_length=100, blank=True,
help_text='simple description text') # 간단한 설명
content = models.TextField('CONTENT') # 본문 내용( 여러 줄 가능 ) create_date = models.DateTimeField('Create Date', auto_now_add=True)
modify_date = models.DateTimeField('Modify Date', auto_now=True)
# 필드 속성 외에 필요한 파라미터를 Meta 내부 클래스로 정의 가능
class Meta:
verbose_name = 'post'
verbose_name_plural = 'posts'
db_table = 'blog_post' # db에 저장되는 table 이름
ordering = ('-modify_date',)
# 객체의 문자열 표시를 정의합니다.(=toString)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('blog:post_detail', args=(self.slug,))
def get_previous_post(self):
return self.get_previous_by_modify_date()
def get_next_post(self):
return self.get_next_by_modify_date()
그리고 admin 사이트에서도 이것을 확인할 수 있도록 admin.py
를 수정해줍니다.
from django.contrib import admin
from blog.models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'modify_date')
list_filter = ('title', 'content')
search_fields = ('title', 'content')
prepopulated_fields = {'slug' : ('title',)}
admin.site.register(Post,PostAdmin)
이제 명령어를 입력해 model을 만들어줍니다.
python manage.py makemirgrations
python manage.py migrate
이제 모델이 적용된 것을 확인할 수 있습니다. 마찬가지로, admin 사이트에 접속해서도 table에 대한 확인이 가능합니다.