최용우
장고 Serializer의 partial 활용하기 본문
여지껏 DB를 업데이트 할 때 케이스별로 update view를 작성하는 우매한 실수를 저지르고 있었다.
장고의 Serializer에서는 칼럼을 read_only=True 처리 하지 않으면 "This Field is required"오류에 직면한다.
시리얼라이저를 정의할 때 칼럼에 required = False를 선언하면 null 혹은 none 값이 있어도 에러가 생기지 않는다. 그런데 받아오는 Json에 아예 칼럼조차 존재하지 않을 때는 어떻게 해야할까?
나는 모든 케이스에 대해서 view를 새로 작성해야 하는 줄 알았다.
그러나 Serializer의 partial기능을 쓰면 쉽게 해결이 가능하다.
함수형 view에선
serializer = MySerializer(queryset, data={'content': 'my data'}, partial=True)
serializer.save()
클래스형 view에선
def update(self, request, *args, **kwargs):
kwargs['partial'] = True
return super().update(request, *args, **kwargs)
위와 같이 선언해주면 별다른 분기처리 없이 부분 업데이트가 가능하다.
'장고' 카테고리의 다른 글
| Django를 계속 선택할 수 밖에 없는 이유 (0) | 2024.03.31 |
|---|---|
| Django 모델 옵션 설정 default, blank, null (0) | 2022.06.01 |
| 파이썬 정규식 비캡처링 그룹 '?:' (1) | 2022.03.06 |
| 장고 ReadOnlyField의 쓰임 (1) | 2022.02.26 |
| 장고 테스트 케이스 사용법 (0) | 2022.02.14 |