Django 모델(Model)
객체의 특별한 종류. 부가적인 메타데이터를 가진 데이터베이스의 구조(layout). 이 모델을 저장하면 그 내용이 데이터베이스에 저장됨.
App 만들기
(myvenv) ~/djangogirls$python manage.py startapp blog
//result
djangogirls
├── mysite
| __init__.py
| settings.py
| urls.py
| wsgi.py
├── manage.py
└── blog
├── migrations
| __init__.py
├── __init__.py
├── admin.py
├── models.py
├── tests.py
└── views.py
mysite/settings.py를 수정
#mysite/settings.py
#add blog
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
블로그 글 모델 생성
#blog/models.py
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
Django 필드 타입 종류
(https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types)
CharField | 제한된 문자열 필드 타입. 최대 길이를 max_length 옵션에 지정해야 한다. 문자열의 특별한 용도에 따라 CharField의 파생클래스로서, 이메일 주소를 체크를 하는 EmailField, IP 주소를 체크를 하는 GenericIPAddressField, 콤마로 정수를 분리한 CommaSeparatedIntegerField, 특정 폴더의 파일 패스를 표현하는 FilePathField, URL을 표현하는 URLField 등이 있다. |
TextField | 대용량 문자열을 갖는 필드 |
IntegerField | 32 비트 정수형 필드. 정수 사이즈에 따라 BigIntegerField, SmallIntegerField 을 사용할 수도 있다. |
BooleanField | true/false 필드. Null 을 허용하기 위해서는 NullBooleanField를 사용한다. |
DateTimeField | 날짜와 시간을 갖는 필드. 날짜만 가질 경우는 DateField, 시간만 가질 경우는 TimeField를 사용한다. |
DecimalField | 소숫점을 갖는 decimal 필드 |
BinaryField | 바이너리 데이타를 저장하는 필드 |
FileField | 파일 업로드 필드 |
ImageField | FileField의 파생클래스로서 이미지 파일인지 체크한다. |
UUIDFIELD | GUID (UUID)를 저장하는 필드 |
DB에 모델을 위한 테이블 만들기
(myvenv) ~/djangogirls$python manage.py makemigrations blog
(myvenv) ~/djangogirls$python manage.py migrate blog
참고
728x90
반응형
'WEB' 카테고리의 다른 글
[Django/Blog] URL (0) | 2019.12.07 |
---|---|
[Django/Blog] 관리자 설정 (0) | 2019.12.07 |
[Django/Blog] Virtualenv & Django 설치 및 프로젝트 생성 (0) | 2019.12.06 |
[WEB] SEO (search engine optimization) 검색 엔진 최적화 (0) | 2019.11.17 |
[WEB] Semantic(의미론적인) Web (0) | 2019.11.16 |