Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags more
Archives
Today
Total
관리 메뉴

최용우

장고 Serializer의 partial 활용하기 본문

장고

장고 Serializer의 partial 활용하기

용우쨩 2022. 5. 16. 00:01

여지껏 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)

위와 같이 선언해주면 별다른 분기처리 없이 부분 업데이트가 가능하다.