blog 앱 만들기 & Post 모델 만들기 & admin에 추가하기
블로그 앱 만들기
프로젝트 밑에 startapp
명령어를 통해 blog 앱을 만들어 줍니다.
python manage.py startapp blog
|
Post 모델 만들기
blog/model.py
from django.db import models from django.contrib.auth.models import User
class Post(models.Model): title = models.CharField(max_length=30) content = models.TextField() create = models.DateTimeField() author = models.ForeignKey(User)
|
blog 앱 추가하기
mysite/setting.py
INSTALLED_APPS = [ 'blog', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
|
마이그레이션 하기
python manage.py makemigrations
|
오류가 뜸…
TypeError: __init__() missing 1 required positional argument: 'on_delete'
|
CASCADE 옵션을 주기
from django.db import models from django.contrib.auth.models import User
class Post(models.Model): title = models.CharField(max_length=30) content = models.TextField() create = models.DateTimeField() author = models.ForeignKey(User, on_delete=models.CASCADE)
|
ForeignKey에 대한 on_delete 옵션
옵션 |
설명 |
models.CASCADE |
ForeignKeyField가 바라보는 값이 삭제될 때 관련된 모든 row를 삭제한다. |
models.PROTECT |
ForeignKeyField가 바라보는 값이 삭제될 때 삭제가 되지 않도록 ProtectedError를 발생시킨다. |
models.SET_NULL |
ForeignKeyField가 바라보는 값이 삭제될 때 ForeignKeyField값을 NULL로 한다. |
models.SET_DEFAULT |
ForeignKeyField가 바라보는 값이 삭제될 때 ForeignKeyField를 default로 바꾼다. |
models.set() |
ForeignKeyField가 바라보는 값이 삭제될 때 ForeignKeyField값을 SET에 의해 설정된 값으로 설정한다. |
models.DO_NOTHING |
ForeignKeyField가 바라보는 값이 삭제될 때 아무런 행동을 취하지 않는다. |