[Django] Field 분석 ①

kiteB·2021년 11월 8일
0

Django

목록 보기
2/5
post-thumbnail

오늘은 Django가 제공하는 필드 종류를 정리해보려고 한다.

🔗 django docs 문서를 참고하여 자주 쓸 것 같은 부분만! 😙


1. AutoField

class AutoField(**options)

ID로 사용 가능한, 자동으로 증가하는 IntegerField

  • 일반적으로 직접 사용할 필요는 없다.
  • 모델의 기본 키 필드는 자동으로 모델에 추가된다.

2. BooleanField

class Boolean(**options)

논리 필드. true/false 필드

  • 기본 폼 위젯은 CheckboxInput이며,
    null 값을 허용하고 싶다면 NullBooleanSelect을 사용하자.
  • Field.default가 정의되지 않은 경우, BooleanField기본값은 None이다.

3. CharField

class CharField(max_length=None, **options)

작은 문자열에서 큰 사이즈의 문자열을 위한 문자열 필드

  • 많은 양의 텍스트인 경우는 TextField를 사용하자!
  • 이 필드의 기본 폼 위젯은 TextInput이다.

[ arguments ]

  • max_length: 필수값. 필드의 최대 길이(문자 수)
  • db_collation: 선택값. 필드의 데이터베이스 데이터 정렬 이름

4. DateField

class DateField(auto_now=False, auto_now_add=False, **options)

Python의 datetime.date 인스턴스로 표시되는 날짜

[ arguments ]

  • DateField.auto_now
    • 객체가 저장될 때마다 자동으로 필드를 현재 시간으로 설정한다.
    • "last-modified"의 타임스탬프로 유용하다.
    • 항상 현재 날짜가 사용된다. 기본값을 재정의할 수 없다.
    • 필드는 Model.save()가 호출될 때 자동으로 업데이트된다.
      QuerySet.update()와 같은 다른 방법으로 다른 필드를 수정할 때는 업데이트되지 않는다.
  • DateField.auto_now_add
    • 객체가 처음 생성될 때 자동으로 필드를 현재 시간으로 설정한다.
    • 생성의 타임스탬프로 유용하다.
    • 항상 현재 날짜가 사용된다. 기본값을 재정의할 수 없다.
    • 따라서 객체가 생성될 때 이 필드에 값을 설정해도 무시된다.

auto_now_add, auto_now, default는 상호배타적이다. 즉, 같이 사용할 수 없다!


5. DateTimeField

class DateTimeField(auto_now=False, auto_now_add=False, **options)

Python의 datetime.datetime 인스턴스로 표시되는 날짜와 시간

  • DateField와 동일한 추가 인수를 가지고 있다.
  • 이 필드의 기본 폼 위젯은 단일 DateTimeInput

6. EmailField

class EmailField(max_length=254, **options)

EmailValidator를 이용해서 유효한 이메일인지 체크하는 CharField


7. ImageField

class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)

FileField로부터 모든 속성과 메서드를 상속받지만,
업로드된 객체가 유효한 이미지인지도 검증한다.

  • FileField에서 사용 가능한 특별한 속성들 외에도, height, width 속성을 갖는다.
  • Pillow 라이브러리를 요구한다.
  • ImageField 인스턴스는 기본 최대 길이가 100자인 varchar 컬럼으로 데이터베이스에 생성된다. 다른 필드와 마찬가지로 max_length 인수를 사용해서 최대 길이를 변경할 수 있다.

[ arguments ]

  • ImageField.height_field
    • 모델 인스턴스가 저장될 때마다 이미지 높이가 자동으로 채워지는 모델 필드의 이름
  • ImageField.width_field
    • 모델 인스턴스가 저장될 때마다 이미지 너비가 자동으로 채워지는 모델 필드의 이름

8. IntegerField

class IntegerField(**options)

정수

  • Django가 지원하는 모든 데이터베이스에서 -2147483648 ~ 2147483647 범위 내에 있는 값은 안전하다.

9. TextField

class TextField(**options)

큰 텍스트 필드

  • 이 필드의 기본 폼 위젯은 Textarea이다.
  • max_length 속성을 지정하면, 자동으로 생성된 폼 필드의 Textarea 위젯에 반영된다.
  • 하지만 모델 또는 데이터베이스 수준에서는 적용되지 않는다.
    → 이런 경우에는 CharField를 사용하기!

10. TimeField

class TimeField(auto_now=False, auto_now_add=False, **options)

Python의 datetime.time 인스턴스로 표시되는 시간

  • DateField와 동일한 자동 채우기 옵션을 허용한다.

11. URLField

class URLField(max_length=200, **options)

URL을 위한 CharField

  • URLValidator에 의해 검증된다.
  • 모든 CharField의 하위 클래스와 마찬가지로, max_length 인수를 사용한다.
    따로 지정하지 않으면 기본값인 200이 사용된다.
profile
🚧 https://coji.tistory.com/ 🏠

1개의 댓글

comment-user-thumbnail
2021년 11월 9일

정말 유익한 게시물이에요!

답글 달기