Django에서 DB Entity를 나타내기 위해서 django.db의 Model이라는 모듈을,
View 계층(장고에서는 View, 일반적으로는 Controller 계층)에 데이터를 안정적으로 전송하기 위해 Form이라는 모듈 제공한다.
이는 django 프로젝트를 생성했을 때 생기는 models.py 와 forms.py에 기본적으로 포함되어있다.
임의로 게시글 Post 모델을 작성한다면
from djang.db import models
class Post(models.Model):
BOARD_CHOICE = (
('free', '자유 게시판'),
('game', '게임 게시판')
)
title = models.CharField('이름',
max_length=20)
body = models.TextField('내용')
category = models.CharField('게시판',
max_length=20,
choices=BOARD_CHOICE,
default='free')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_add=True)
from django import forms
from .models import Post
class PostForm(forms.Form):
title = forms.CharField(label='제목')
body = forms.CharField(label='내용', widget=forms.Textarea)
class PostModelForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'body', 'cagetory']
# 전부 입력받으려면 아래와 같이 사용
# fields = '__all__'
기본적으로 null=False, blank=False 상태이다.
class Person(models.Model):
name = models.CharField(max_length=255) # 필수
bio = models.TextField(max_length=500, blank=True) # 선택 (null=True를 넣지 말자)
birth_date = models.DateField(null=True, blank=True) # 선택 (여기서는 null=True를 넣을 수 있다.)
text = models.TextField(null=True, blank=True)
# null : 데이터가 없으면 Null 입력
# blank : 데이터가 없으면 공백('') 입력
10. null=True 와 blank=True 의 차이가 무엇인가요?
TIL.57 null=True 와 blank=True 의 차이(Django)
(번역) Django Tips #8 Blank or Null?