Django_Field Options

강현구·2022년 2월 2일
0

Django

목록 보기
10/12

Django model의 Field

django의 model에서는 DB table의 column들에 대해 datatype을 지정한다.
그 뿐만 아니라 각각에 대해 Field option을 부여할 수 있다.
이 option들은 수 없이 많은 종류가 있으며, 그 중 사용해봤던 option들을 정리해본다.
출처 : Django official

null

True/False 값을 선택, default는 False 이다.
공식 문서에서는 CharField, TestField등의 문자열 기반의 필드에서는 사용을 피하라고 되어있다.
(이는 '데이터 없음'과 빈 문자열의 두개의 가능한 값이 존재하기 때문이다.)
일반적으로 빈 값을 저장하기 위해서null=Trueblank=True와 같이 쓰인다.

blank

True/False 값을 선택, default는 False 이다.
null과 의미상으로는 유사하지만 null은 순수하게 DB와 관련 있는 반면, blank는 validation과 관계가 있다. blank=True를 받으면 form validation은 빈 값을 허용한다. blank=False일 경우에는 필드 값이 요구된다.

choices

Field의 선택지로서 사용할 수 있는 순회할 수 있는 데이터로 구성된다.
(ex) [(A,B), (A,B) ...]
choices를 받으면, 기본적인 text field 대신 이 선택지들이 있는 select box의 형태로 model validation을 하도록 한다.

YEAR_IN_SCHOOL_CHOICES = [
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
]

위와 같은 choice 배열을 따로 정의해주어야 하고, 배열안의 tuple에서 앞의 값은 DB에 들어가는 값, 뒤의 값이 사람이 읽게되는 값이다.

default

field에 default 값을 부여한다.
dafault는 mutable한 객체는 받을 수 없다.(model instance나 list, set 등)
하지만, 원하는 default를 호출가능한 형태로 싸서 사용할 수 있다. (function의 형태로)

def contact_default():
    return {"email": "to1@example.com"}

contact_info = JSONField("ContactInfo", default=contact_default)

primary_key

True/False 값을 선택, 해당 field를 model의 PK로 지정한다.
model에서 primary_key=True가 지정되지 않으면 django는 자동으로 필드를 설정한다.
primary_key=Truenull=Trueunique=True 암시한다.(내용을 자동으로 포함)

unique

True/False 값을 선택, True이면, table에서 반드시 고유한 값을 갖도록 한다.
model validation에 의해서 DB 단계에서 수행된다.
이 옵션은 ManyToManyField, OneToOneField를 제외한 모든 field에서 유효하다.

... 계속

profile
한걸음씩

0개의 댓글