바뀜

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