문자열 데이터를 받는 필드
name = serializers.CharField()
옵션
정수형 데이터를 받는 필드
running_time = serializers.IntegerField()
옵션
날짜 데이터를 받는 필드
opening_date = serializers.DateField()
옵션
지정해 주지 않으면 포맷(2022-01-01)이 기본으로 적용
사용 예시
# 슬래시(/)를 기준으로 날짜가 구분
opening_date = serializers.DateField(format="%Y/%m/%d")
날짜와 시간이 모두 담긴 데이터를 받을 수 있는 필드
created = serializers.DateTimeField()
옵션
자세한 날짜 시간 포맷 링크
https://www.w3schools.com/python/python_datetime.asp
각각 파일, 이미지를 받는 필드
file = serializers.FileField()
image = serializers.ImageField()
옵션
use_url이 True면 파일의 경로가 URL 방식으로 나오고, False일 경우 파일의 경로만 나온다
사용자가 정의한 함수를 통해 직렬화 과정에서 새로운 값을 생성할 수 있는 필드
데이터 생성 시에는 사용할 수 없는 read_only 필드
age = serializer.SerializerMethodField()
옵션
필드에 상관없이 공통으로 사용할 수 있는 옵션
read_only
write_only
required
equired=False와 read_only=True는 둘 다 데이터 생성·수정 요청 시 필드에 값을 입력하지 않게 하는 옵션인데 입력된 값이 있을 때 처리하는 방식이 다르다.
read_only=True는 데이터 생성·수정 요청 시 필드에 입력된 값을 무시하고 역직렬화하지 않는다
equired=False는 값을 입력하지 않아도 되지만, 만약에 입력한다면 해당 값도 역직렬화한다
source
참고
https://www.django-rest-framework.org/api-guide/fields/#serializer-fields