(venv) ᐅ python manage.py startapp blog
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=30) // 타이틀
// CharField 는 반드시 max_length 를 설정해주어야함.
content = models.TextField() // 내용
created = models.DateTimeField() // 작성시간
author = models.ForeignKey(User, on_delete=models.CASCADE)
// User 가 삭제될 경우 어떻게 처리할지 설정
// django 2.x 버전 : on_delete=True
// django 3.x 버전 : on_delete=models.CASCADE
def __str__(self):
return '{} :: {}'.format(self.title, self.author)
// 따로 설정하지 않을 경우 blog 포스트 목록에 PostObject(1)처럼 표시되어 제목과 작성자를 목록에 표시해주기
from django.contrib import admin
from .models import Post
admin.site.register(Post)
(venv) ᐅ python manage.py createsuperuser
Username (leave blank to use 'rxdryd'): rxdryd
Email address: rxdryd@test.com
Password:
Password (again):
Superuser created successfully.
(venv) ᐅ python manage.py makemigrations
No changes detected
(venv) ᐅ python manage.py makemigrations blog
No installed app with label 'blog'.
No installed app 이라는 결과가 나올 경우 mysite > settings.py 수정필요
INSTALLED_APPS = [
// default
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', // 생성한 app blog 한줄 추가
]
migration 재수행
(venv) ᐅ python manage.py makemigrations blog
Traceback (most recent call last):
...
...
File "/Users/projects/blog/models.py", line 9, in Post
author = models.ForeignKey(User)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
on_delete 에 argument 가 빠졌다는 TypeError 발생할경우, 뒤에 인자추가
author = models.ForeignKey(User, on_delete=models.CASCADE)
다시 migration 재수행
(venv) ᐅ python manage.py makemigrations blog
Migrations for 'blog':
blog/migrations/0001_initial.py
- Create model Post
(venv) ᐅ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
blog 아래 migrations 하위 내용은 버전관리 불필요.
변경내용이 있을 때 마다 0001_initial.py 같은 새로운 파일이 생성된다.
mysite > settings.py 수정
변경 전 : TIME_ZONE = 'UTC'
변경 후 : TIME_ZONE = 'Asia/Seoul'
Now 를 클릭하면 정상적으로 현재시간이 동일하게 표시된다.
https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC/dashboard