"2. 장고 모델 필드 & 제약조건"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(→공통옵션) |
(→공통옵션) |
||
3번째 줄: | 3번째 줄: | ||
폼 등의 사용해서 자동화에 도움을 준다. | 폼 등의 사용해서 자동화에 도움을 준다. | ||
− | == | + | =필드= |
− | + | ==텍스트 관련== | |
+ | {| class="wikitable" | ||
+ | !내용 | ||
+ | !설명 | ||
+ | !옵션 | ||
+ | |- | ||
+ | |models.CharField | ||
+ | |텍스트 필드. | ||
+ | (글자제한을 위해) | ||
+ | | | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
!옵션 | !옵션 | ||
− | ! | + | !설명 |
+ | |- | ||
+ | |max_length=숫자 | ||
+ | |필수옵션. 해당숫자만큼으로 제한한다. | ||
+ | |} | ||
|- | |- | ||
− | | | + | |models.TextField |
− | | | + | |텍스트 필드. |
− | + | (글자제한 없음) | |
− | + | | | |
+ | |} | ||
+ | ==숫자 관련== | ||
+ | {| class="wikitable" | ||
+ | !내용 | ||
+ | !설명 | ||
+ | !옵션 | ||
|- | |- | ||
− | | | + | |models.IntegerField |
− | | | + | |숫자담기 |
− | + | |<nowiki>-2147483648 부터 2147483647 까지 정수를 지원한다.</nowiki> | |
− | + | |} | |
+ | ==시간 관련== | ||
+ | {| class="wikitable" | ||
+ | !내용 | ||
+ | !설명 | ||
+ | !옵션 | ||
|- | |- | ||
− | | | + | |models.DateTimeField |
− | | | + | |시간담기 |
+ | | | ||
+ | {| class="wikitable" | ||
+ | !옵션 | ||
+ | !설명 | ||
|- | |- | ||
− | | | + | |auto_now_add |
− | | | + | |True인 경우, 객체 생성시 자동 입력 |
|} | |} | ||
− | + | |}이외 내용은 장고 공식 메뉴얼의 필드 레퍼런스를 참조. https://docs.djangoproject.com/en/3.1/ref/models/fields/#db-index | |
==타 모델과 연결하는 필드== | ==타 모델과 연결하는 필드== | ||
연결하려는 쪽에서 사용해주면 된다. | 연결하려는 쪽에서 사용해주면 된다. | ||
99번째 줄: | 127번째 줄: | ||
| | | | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==선택모델 만들기== | ==선택모델 만들기== | ||
카테고리를 지정할 때 사용한다.<syntaxhighlight lang="python"> | 카테고리를 지정할 때 사용한다.<syntaxhighlight lang="python"> | ||
184번째 줄: | 161번째 줄: | ||
] | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | = 공통옵션(제약조건) = | ||
+ | 모든 필드 안에 들어가는 공통옵션 | ||
+ | {| class="wikitable" | ||
+ | !옵션 | ||
+ | ! | ||
+ | |- | ||
+ | |null | ||
+ | |DB 자체와 관련된 옵션. | ||
+ | <code>null=True</code> 의 옵션을 넣으면 해당 값이 비어있어도 된다는 의미. 디폴트는 False. | ||
+ | 유니크 옵션과 함께 쓸 경우엔 항상 False로 두어야 한다. | ||
+ | |- | ||
+ | |blank | ||
+ | |Form과 관련된 옵션.(입력양식과 관련) | ||
+ | null과 유사하게 True를 넣으면 빈 칸으로 둘 수 있다.(폼의 입력에서 빈칸으로 둘 수 있다.) | ||
+ | 이걸 쓰려면 null=True와 함께 써야만 한다. | ||
+ | |- | ||
+ | |default | ||
+ | |값이 없을 때 무엇을 넣을지. | ||
+ | |- | ||
+ | |help_text | ||
+ | |필드 입력 도움말. 폼 입력시 입력창 다음에 나타나는 메시지. | ||
+ | |} | ||
[[분류:장고 모델]] | [[분류:장고 모델]] |
2021년 5월 11일 (화) 20:07 판
1 개요
모델이 품을 데이터 형식을 지정한다.
폼 등의 사용해서 자동화에 도움을 준다.
2 필드
2.1 텍스트 관련
내용 | 설명 | 옵션 | ||||
---|---|---|---|---|---|---|
models.CharField | 텍스트 필드.
(글자제한을 위해) |
| ||||
models.TextField | 텍스트 필드.
(글자제한 없음) |
2.2 숫자 관련
내용 | 설명 | 옵션 |
---|---|---|
models.IntegerField | 숫자담기 | -2147483648 부터 2147483647 까지 정수를 지원한다. |
2.3 시간 관련
내용 | 설명 | 옵션 | ||||
---|---|---|---|---|---|---|
models.DateTimeField | 시간담기 |
|
이외 내용은 장고 공식 메뉴얼의 필드 레퍼런스를 참조. https://docs.djangoproject.com/en/3.1/ref/models/fields/#db-index
2.4 타 모델과 연결하는 필드
연결하려는 쪽에서 사용해주면 된다.
내용 | 설명 | 옵션 |
---|---|---|
models.ForeignKey | 외래키를 사용함. N:1 연결.
상위에 연결된 모델에선 자동으로 view에선 template에선 상위모델만 받아도 하위객체를 불러다 쓸 때 다시 같은 방법으로 더 하위객체를 불러올 수 있다. |
속성=models.ForeignKey(외래모델) |
modles.ManyToManyField | N:N연결. 한 게시물에 여러 추천자가 올라오는 등의 추천 구현 등에서 사용한다. | 속성=models.ManyToManyField(외래모델) |
models.OneToOneField | 1:1 연결. 불러오면 할당된 객체를 반환한다. 프로필 확장 등에서 사용. | 속성=models.OneToOneField(외래모델) |
2.4.1 models.ForeingKey
외부객체와 연결하기 위한 필드. 일반적으로 외부 모델에 대한 하위모델을 지정할 때 사용한다.
내용 | 설명 |
---|---|
필드명 = models.ForeignKey | author속성을 외부의 객체를 불러온다는 의미. |
2.4.1.1 옵션
내용 | 설명 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
어느 객체를 불러올 것인가. | models.ForeignKey(모델명, 이외옵션) 형태로 모델을 import해서 넣는다. | ||||||||||||||
on_delete=models.세부옵션 | on_delete= 옵션이 필수로 지정되어야 함.
| ||||||||||||||
related_name='author_posting' |
2.5 선택모델 만들기
카테고리를 지정할 때 사용한다.
from django.db import models
class Student(models.Model):
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
GRADUATE = 'GR'
YEAR_IN_SCHOOL_CHOICES = [
('내부에서처리할텍스트', '사용자에게보여질텍스트'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
(GRADUATE, 'Graduate'),
]
year_in_school = models.CharField(max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=SOPHOMORE,)
선택지를 그룹화기 위해선 다음과 같이 사용한다.
MEDIA_CHOICES = [
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
]
3 공통옵션(제약조건)
모든 필드 안에 들어가는 공통옵션
옵션 | |
---|---|
null | DB 자체와 관련된 옵션.
|
blank | Form과 관련된 옵션.(입력양식과 관련)
null과 유사하게 True를 넣으면 빈 칸으로 둘 수 있다.(폼의 입력에서 빈칸으로 둘 수 있다.) 이걸 쓰려면 null=True와 함께 써야만 한다. |
default | 값이 없을 때 무엇을 넣을지. |
help_text | 필드 입력 도움말. 폼 입력시 입력창 다음에 나타나는 메시지. |