본문 바로가기

Django/DRF

[Django] DecimalField

 

 

 

DecimalField

10 진수 표현으로, python에서 Decimal 인스턴스로 나타낸다.
django.db.models.fields.DecimalField에 해당한다.

FloatField는 소수점의 근사값을 제공하지만 DeciamalField는 소수점 자리를 설정해서 원하는 자릿수만큼 출력이 가능하다.

 

1. 구성 인자

DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None)
  • max_digits : 숫자에 허용되는 최대 자릿수를 말하며, None이거나 decimal_places보다 크거나 같은 정수여야 함
  • decimal_places : 숫자와 함께 저장할 소수 자릿수를 말함
  • coerce_to_string
    • 표현식에 문자열 값을 반환해야하는 경우 True로 설정
    • Decimal 객체를 반환해야하는 경우 False로 설정
    • 기본값은 COERCE_DECIMAL_TO_STRING 설정 키와 같은 값으로, 오버라이드 하지 않으면 True
    • serializer가 Decimal 객체를 반환하면 최종 출력 형식은 렌더러에 의해 결정
    • localize를 설정하면 값이 True로 설정
  • max_value : 제공 된 숫자가 위 값보다 크지 않은지 확인
  • min_value : 제공 된 숫자가 위 값보다 작지 않음을 검증

 

2. 사용 예시

models.DecimalField(..., max_digits=5, decimal_places=2)

최대 숫자 자리수 : 5
최대 소수점 자리수 : 2

즉, xxxxx.yy 라고 표현이 가능하다.