바뀜

2,089 바이트 추가됨 ,  2022년 12월 4일 (일) 20:45
3번째 줄: 3번째 줄:     
폼 등의 사용해서 자동화에 도움을 준다.
 
폼 등의 사용해서 자동화에 도움을 준다.
==공통옵션==
+
=필드=
모든 필드 안에 들어가는 공통옵션
+
데이터를 저장할 테이블을 디자인해야 하는데, 테이블의 속성에 대한 제약은 모델의 필드에서 만들어준다.
 +
 
 +
==텍스트 관련==
 +
{| class="wikitable"
 +
!내용
 +
!설명
 +
!옵션
 +
|-
 +
|models.CharField
 +
|텍스트 필드.
 +
(글자제한을 위해)
 +
|
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
 
!옵션
 
!옵션
!
+
!설명
 +
|-
 +
|max_length=숫자
 +
|필수옵션. 해당숫자만큼으로 제한한다.
 +
|}
 +
|-
 +
|models.TextField
 +
|텍스트 필드.
 +
(글자제한 없음)
 +
|
 +
|}
 +
==숫자 관련==
 +
{| class="wikitable"
 +
!내용
 +
!설명
 +
!옵션
 +
|-
 +
|models.IntegerField
 +
|숫자담기
 +
|<nowiki>-2147483648 부터 2147483647 까지 정수를 지원한다.</nowiki>
 
|-
 
|-
|null
+
|FloatField
|<code>null=True</code> 의 옵션을 넣으면 해당 값이 비어있어도 된다는 의미. 디폴트는 False.
+
|부동소수점
유니크 옵션과 함께 쓸 경우엔 항상 False로 두어야 한다.
+
|
 +
|}
 +
==시간 관련==
 +
{| class="wikitable"
 +
!내용
 +
!설명
 +
!옵션
 
|-
 
|-
|blank
+
|models.DateTimeField
|null과 유사하게 True를 넣으면 빈 칸으로 둘 수 있다.(폼의 입력에서 빈칸으로 둘 수 있다.)
+
|시간담기
이걸 쓰려면 null=True와 함께 써야만 한다.
+
|
 +
{| class="wikitable"
 +
!옵션
 +
!설명
 
|-
 
|-
|default
+
|auto_now_add
|값이 없을 때 무엇을 넣을지.
+
|True인 경우, 객체 생성시 자동 입력. 이후 다시 업데이트 하지 않는다.
 
|-
 
|-
|help_text
+
|auto_now
|필드 입력 도움말. 폼 입력시 입력창 다음에 나타나는 메시지.
+
|게시글 수정시간 등을 남길 때 사용. 수정할 때마다 자동입력.
 
|}
 
|}
=필드=
+
|}이외 내용은 장고 공식 메뉴얼의 필드 레퍼런스를 참조. https://docs.djangoproject.com/en/3.1/ref/models/fields/#db-index
 
==타 모델과 연결하는 필드==
 
==타 모델과 연결하는 필드==
 
연결하려는 쪽에서 사용해주면 된다.
 
연결하려는 쪽에서 사용해주면 된다.
 +
 +
외부모델을 연결한다든가 다양한 상황이 생길 수 있다. 이때 외부모델을 임포트해와야 하는데, 다음과 같은 형식으로 불러온 후 사용한다.
 +
 +
* <code>from 앱이름.models import 모델명</code> 형식으로 임포트 해서 사용할 수 있다.
 +
* 타 모델과 연결할 땐 텍스트타입이 아니라, 모델 자체를 넣는다.(같은 앱의 모델을 연결할 땐 텍스트타입으로 '모델명' 형태로 기입한다.)
 
{| class="wikitable"
 
{| class="wikitable"
 
!내용
 
!내용
44번째 줄: 88번째 줄:  
|-
 
|-
 
|modles.ManyToManyField
 
|modles.ManyToManyField
 +
many to many 연결
 
|N:N연결. 한 게시물에 여러 추천자가 올라오는 등의 추천 구현 등에서 사용한다.
 
|N:N연결. 한 게시물에 여러 추천자가 올라오는 등의 추천 구현 등에서 사용한다.
 +
연결한 모델이 하위, 연결당한 모델이 상위모델처럼 쓰인다.
 +
 +
<code>연결한모델.상위모델.all()</code>로 연결한 상위모델을 불러올 수 있고,
 +
 +
<code>상위모델.연결한모델_set.all()</code>로 어떤 모델이 자신에게 연결되었는지 볼 수 있다.
 
|속성=models.ManyToManyField(외래모델)
 
|속성=models.ManyToManyField(외래모델)
 
|-
 
|-
58번째 줄: 108번째 줄:  
|-
 
|-
 
|필드명 = models.ForeignKey
 
|필드명 = models.ForeignKey
|author속성을 외부의 객체를 불러온다는 의미.
+
|필드명 속성을 외부의 객체로 둔다는 의미.
 
|}
 
|}
 +
자기참조를하기 위한 방법. 'self'를 넣어 구성하면 된다.
 +
 +
<code>connected_username = models.ForeignKey('self', on_delete=models.CASCADE)</code>
 +
 
====옵션====
 
====옵션====
 +
외래키, 1:1 연결에서 사용하는 옵션이다.
 
{| class="wikitable"
 
{| class="wikitable"
 
!내용
 
!내용
66번째 줄: 121번째 줄:  
|-
 
|-
 
|어느 객체를 불러올 것인가.
 
|어느 객체를 불러올 것인가.
|models.ForeignKey(모델명, 이외옵션) 형태로 모델을 import해서 넣는다.
+
|models.ForeignKey(연결할모델명, 이외옵션) 형태로 작성한다.
 
|-
 
|-
 
|on_delete=models.세부옵션
 
|on_delete=models.세부옵션
76번째 줄: 131번째 줄:  
|-
 
|-
 
|CASCADE
 
|CASCADE
|외래모델이 지워지면 함께 지운다는 의미.
+
|외래 모델이 지워지면 함께 지운다는 의미.(기존 글이 사라질 때 댓글이 같이 사라지게 한다)
 
|-
 
|-
 
|PROTECT
 
|PROTECT
97번째 줄: 152번째 줄:  
|
 
|
 
|}
 
|}
==텍스트 관련==
+
 
 +
==== 사용예 ====
 
{| class="wikitable"
 
{| class="wikitable"
!내용
+
!
!설명
+
!
!옵션
+
!
 
|-
 
|-
|models.CharField
+
|댓글달기
|텍스트 필드.
+
|댓글을 다는 기능을 구현하기 위해 댓글 테이블을 만들려면 기존 글에 대한 ForeignKey를 사용해야 한다.
(글자제한을 위해)
+
|<syntaxhighlight lang="python">
|
+
class 댓글(models.Model):
{| class="wikitable"
+
    기존글 = models.ForeignKey(기존모델, on_delete-models.CASCADE)
|+
+
</syntaxhighlight>
!옵션
  −
!설명
  −
|-
  −
|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
   
==선택모델 만들기==
 
==선택모델 만들기==
 
카테고리를 지정할 때 사용한다.<syntaxhighlight lang="python">
 
카테고리를 지정할 때 사용한다.<syntaxhighlight lang="python">
182번째 줄: 201번째 줄:  
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
= 옵션 =
 +
 +
== 공통옵션(제약조건) ==
 +
모든 필드 안에 들어가는 공통옵션
 +
{| class="wikitable"
 +
!옵션
 +
!설명
 +
|-
 +
|null
 +
|DB 자체와 관련된 옵션.
 +
<code>null=True</code> 의 옵션을 넣으면 해당 값이 비어있어도 된다는 의미. 디폴트는 False.
 +
유니크 옵션과 함께 쓸 경우엔 항상 False로 두어야 한다.
 +
|-
 +
|blank
 +
|Form과 관련된 옵션.(입력양식과 관련)
 +
null과 유사하게 True를 넣으면 빈 칸으로 둘 수 있다.(폼의 입력에서 빈칸으로 둘 수 있다.)
 +
이걸 쓰려면 null=True와 함께 써야만 한다.
 +
|-
 +
|default
 +
|값이 없을 때 무엇을 넣을지.
 +
|-
 +
|help_text
 +
|필드 입력 도움말. 폼 입력시 입력창 다음에 나타나는 메시지.
 +
|}
 +
 +
== 특수 옵션 ==
 +
{| class="wikitable"
 +
!옵션
 +
!설명
 +
|-
 +
|db_index
 +
|True를 넣으면 이 필드를 인덱스로 사용하겠다는 것.
 +
|-
 +
|allow_unicode
 +
|True를 넣으면 영어 외의 값도 허용한다는 것.
 +
|}
 
[[분류:장고 모델]]
 
[[분류:장고 모델]]