[Django] Model Field (1)

dev.soo·2020년 9월 18일
1

converse project

목록 보기
2/2
post-custom-banner

Account.models 에서 사용한 필드

1. DateField

파이썬의 datetime.date instance 로 표현된다.

DateField.auto_now : 업데이트 일자 저장

DateField.auto_now_add : 최초 생성 일자 저장

  • 예시 : birthday = models.DateField
  • 주의
    1) auto_now=True or auto_now_add = True인 경우 editable=False blank=True 가 자동으로 세팅됨.
    2) auto_now_add, auto_now, default 는 함께 사용할 수 없음(에러 반환)
  • 디폴트 값 : default = date.today - from datetime.date.today()

2. DateTimeField

파이썬의 datetime.datetime instance 로 표현된다.

DateTimeField.auto_now : 업데이트 일시 저장

DateTimeField.auto_now_add : 최초 생성 일시 저장

  • 예시 : created_at = models.DateTimeField(auto_now_add=True)
  • 주의 : auto_now_add, auto_now, default 는 함께 사용할 수 없음(에러 반환)
  • 디폴트 값 : default=timezone.now- from django.utils.timezone.now()

2-1. 시간대 설정하기

시간대 설정은 기본적으로 비활성화 되어 있어서, settings.py 에서 USE_TZ = True 를 설정해 주면 된다.

한국시간 설정하기
settings.py

LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = False # True 인 경우 디폴트로 미국 시간 사용. False 로 변경해 주어야 설정한 시간대로 변경됨.

참고 문서 : https://docs.djangoproject.com/en/3.1/topics/i18n/timezones/



3. EmailField : EmailValidator 사용을 위해

EmailField(max_length=254, **options)

View 에서 email 유효성 검사를 위해, models 에서 CharField 와 같은 속성인 EmailField 를 사용한다. CharField 와 성질이 같으므로, max_length 도 함께 적어준다.

  • 예시 : email = models.EmailField(max_length=245)

3-1. Email Validator

https://docs.djangoproject.com/en/3.1/ref/validators/#django.core.validators.EmailValidator 참고


4. BooleanField(**options) : T/F

  • True/False 값 지정가능
  • 예시 : has_agreed_marketing = models.BooleanField(default=False)
  • default 는 None

4-1. NullBooleanField(**options)

  • 장고 3.1 에서 BooleanField 인데 null=True 인 필드를 위해 새로 추가된 필드.
  • Null / True 보다는 False/True 로 정확하게 값을 입력해 주는 것이 낫다고 하는데 Null 은 언제 쓰는지 알아봐야겠다.
post-custom-banner

0개의 댓글