Serializer를 통한 유효성 검사 및 저장

cloud_park·2023년 9월 14일
0

DRF를 배우자

목록 보기
1/6

data=인자가 주어질때
.is_valid()가 호출되고
.initioal_data 필드에 접근할 수 있고, .validated_data를 통해 유효성 검증에 통과한 값들이 Save()시에 사용
.errors -> 유효성 검증 후에 오류내역,
.data -> 유효성 검증 후에 갱신된 인스턴스에 대한 필드값

serializer.save

1.DB에 저장한 관련 Instance를 리턴,
.valiated과 kwargs 사전에 합친 데이터를 DB에 저장하려고함.

form과는 다르게 .save할때 바로 업데이트 할때 kwarg를 넘기면 됨
.instance를 줬을때는 update, 아니면 create

DRF의 valitedor

UniqueValidator
모델에 unique.True를 지정하면 모델 index로 자동으로 지정되며, Validator도 자동으로 작동한다.

DRFㅇ의 validator는 다른 Validator를 사용한다. (Form의 Validator와 다르다!)
validate_필드명으로 유효성 검사 수행가능.
class 기반 ViewSet등에서 perform_create 등으로 재정의할 수 있다.


class PostViewSet(ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

    def perform_create(self, serializer):
        author = self.request.user
        ip = self.request.META['REMOTE_ADDR']
        serializer.save(author=author, ip=ip) 
        
        #form에서는 .save(commit=False)를 통해 임시저장을 한후, 
        #추가필드에 대해 지정한 후 commit했으나, 
        #serializer는 kwargs로 전달하여 바로 commit이 가능하다. 
profile
Now in progress of untitled advance

0개의 댓글