본문 바로가기
AI 웹개발반

[TIL] 장고 Field타입과 Field option 알아보기

by 째깍단 2023. 4. 6.

 

개인 과제를 시작하고 하나씩 받아써보는 중에

 

계속 신경쓰였던 Field는 무엇이고 어떤 것이 있는지, 올바르게 사용하고 있는 중인지 궁금해졌다.

그래서 하는 공부 겸 내용 정리.

 

 

< Field >

장고에서의 model은 class로 정의되며, 어떤 속성(Attribute, 요것이 Field!)을 가지는지 설정할 수 있다.

각 장고 앱에 기본적으로 생성되는 model.py에 정의한다.

 

 

 

강의에서 나온 관계 필드..

이것을 생각하며 데이터 모델링을 진행해야하고, 이 모델이 코딩으로 이어진다.

 

OneToOneField 사용자 - 프로필처럼 1 사람에 1 기능이 있는 필드
1 = 1
OnetoMany (= ForeignKey) 한개의 글은 작성자 한 사람,
한 작성자는 여러개의 글을 쓸 수 있다!
1 => 다수
Many to Many 강의에서 들은 바로는 피자…
여러가지 피자 <==> 여러가지 토핑
팔로우 - 팔로잉 관계같은 것이 속한다
다수 <=> 다수

 

 

 

Field에는 관계를 표현하는 필드외에도 속성 필드가 있다.

 

CharField  제한 문자열 삽입 필드
max_length= 옵션으로 지정해준다.
EmailField  이메일 주소 형태를 입력하는 필드
URLField  url주소를 적는 필드
TextField   대용량 문자열을 처리한다 (글쓰기 기능 만들때 본 듯!)
대용량 문자열이다보니 CharField보다 db용량을 많이 쓰지만 크기제한을 따로 하지 않는 경우가 많다.
IntegerField 정수형 필드.
정수에 따라 Big,Small로 쓰기도 한다.
default=  로 기본값을 정해준다.
BooleanField True, False만 저장하는 필드
Null허용시 앞에 붙인다. NullBooleanField

initial= 수정없이 저장될 경우 값을 bool값으로 넣어줌
DatetimeField DatetimeField 시간관련 값 저장 필드. Date/Time으로 떼어서 사용할 수 있다
만약 자동으로 지금 시간을 넣고싶으면 auto_now = True로 옵션을 바꿔주면 된다.
auto_now 옵션 : save 될 때마다 현재 시간을 입력한다
auto_now_add 옵션 : 맨 처음 생성한 현재 날짜만 넣어준다
FileField 파일을 업로드하는 필드
upload_to에 경로지정, 폴더 탐색은 settings.py에 MEDIA_ROOT경로로 부터 시작한다
ImageField  파일필드의 파생 필드로, 파일이 이미지인지 체크해줌
DecimalField 소수점 관련 필드.. 쓸일이 있을까?🤔
max_digits와 decimal_places를 필수로 지정해준다. 
SlugField  이미 확보된 데이터에서 url 만드는 필드
slug = models.SlugField(max_length=40) 이런 식으로 class내에 넣어주고,
데이터를 url로 만들어준다

데이터 :
<title> apple is delicious </title>
<content> 사과가 맛있는 이유는~ </content>
title을 url로 만들어  www.example.com/title/apple_is_delicious  이런 식으로 만들 수 있다는 것

 

 

 

+ 필드옵션 

ex)  models.CharField(*option*) 

 

필드 옵션은 위 예시의 옵션 부분에 들어가는 기능으로

필드마다 기본적으로 적용해야하는 것이 있기도하고..

필요에 따라 자유롭게 설정할 수도 있다.

출처 예제로 보는 파이썬 프로그래밍, http://pythonstudy.xyz/python/article/

이해가 안돼서 일단 따왔는데.. 과제하면서 같이 연구해보자^^;

 

 

 

+ 더 자세한 정보는 레퍼런스를 참고하자...

https://docs.djangoproject.com/en/4.2/ref/models/fields/