Serializer 클래스 필드 종류

웅평·2023년 6월 16일
0

CharField

문자열 데이터를 받는 필드

name = serializers.CharField()

옵션

  • max_length : 최대 길이를 설정
  • min_length : 최소 길이를 설정
  • allow_blank : 빈 데이터를 허용(기본값 False)

IntegerField

정수형 데이터를 받는 필드

running_time = serializers.IntegerField()

옵션

  • max_value : 최대 숫자를 설정
  • min_value : 최소 숫자를 설정

DateField

날짜 데이터를 받는 필드

opening_date = serializers.DateField()

옵션

  • format : 날짜 데이터의 포맷을 지정

    지정해 주지 않으면 포맷(2022-01-01)이 기본으로 적용

사용 예시

# 슬래시(/)를 기준으로 날짜가 구분
opening_date = serializers.DateField(format="%Y/%m/%d")

DateTimeField

날짜와 시간이 모두 담긴 데이터를 받을 수 있는 필드

created = serializers.DateTimeField()

옵션

  • format : 날짜 데이터의 포맷을 지정

자세한 날짜 시간 포맷 링크
https://www.w3schools.com/python/python_datetime.asp

FileField & ImageField

각각 파일, 이미지를 받는 필드

file = serializers.FileField()
image = serializers.ImageField()

옵션

  • max_length : 최대 길이를 지정
  • allow_empty_file : 빈 파일을 받는 걸 허용
  • use_url : URL 입력 방식을 지정

    use_url이 True면 파일의 경로가 URL 방식으로 나오고, False일 경우 파일의 경로만 나온다

SerializerMethodField

사용자가 정의한 함수를 통해 직렬화 과정에서 새로운 값을 생성할 수 있는 필드
데이터 생성 시에는 사용할 수 없는 read_only 필드

age = serializer.SerializerMethodField()

옵션

  • methodname : 함수의 이름을 설정(설정하지 않으면 자동으로 함수 이름이 get변수명으로 지정)

Serializer 옵션의 종류

필드에 상관없이 공통으로 사용할 수 있는 옵션

read_only

  • 데이터를 직렬화할 때 해당 필드를 사용하고, 역직렬화할 때는 사용하고 싶지 않을 때 설정

write_only

  • read_only와 정반대로 동작하는 옵션
  • erializer에서 데이터를 생성할 때에는 입력해야 하지만, 데이터를 조회할 때는 보여주면 안 되는 필드에 사용

required

  • 필드를 필수적으로 입력해야 하는지 정의해 주는 옵션으로, 기본값은 True
  • 데이터를 입력하지 않는다면 is_valid()를 실행할 때 에러가 발생

equired=False와 read_only=True는 둘 다 데이터 생성·수정 요청 시 필드에 값을 입력하지 않게 하는 옵션인데 입력된 값이 있을 때 처리하는 방식이 다르다.
read_only=True는 데이터 생성·수정 요청 시 필드에 입력된 값을 무시하고 역직렬화하지 않는다
equired=False는 값을 입력하지 않아도 되지만, 만약에 입력한다면 해당 값도 역직렬화한다

source

  • 어떤 값을 참조할지 정의하는 옵션

참고
https://www.django-rest-framework.org/api-guide/fields/#serializer-fields

0개의 댓글