• Home
  • About
    • Rinha7 photo

      Rinha7

      Computervision, tf, keras, torch

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

Django 프로젝트(2) 모델 만들기

05 Jul 2019

Reading time ~1 minute

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에 대한 확인이 가능합니다.



djangobackendblogweb Share Tweet +1